<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    紙飛機(jī)

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      22 隨筆 :: 28 文章 :: 30 評論 :: 0 Trackbacks
    用jspsmart下載文件異常(tomcat正常,weblogic不行)

    用jspsmart下載文件JSP代碼如下:
    <%@ page contentType="text/html;charset=GBK" import="com.jspsmart.upload.*" %><%
    //取得服務(wù)器存放文件的路徑
    String reportTemplatePath = (String)session.getAttribute("reportTemplatePath");
    //文件名
    String filename = reportTemplatePath + "/" + request.getParameter("filename");
    filename = new String(filename.getBytes(),"ISO-8859-1");
    // 新建一個SmartUpload對象
    SmartUpload su = new SmartUpload();
    // 初始化
    su.initialize(pageContext);
    //設(shè)定contentDisposition為null以禁止瀏覽器自動打開文件,保證點擊鏈接后是下載文件。若不設(shè)定,則下載的文件擴(kuò)展名為
    //doc時,瀏覽器將自動用word打開它。擴(kuò)展名為pdf時,瀏覽器將用acrobat打開。
    su.setContentDisposition(null);
    // 下載文件
    su.downloadFile(filename);
    %>在tomcat中運(yùn)行正常。
    在weblogic中運(yùn)行拋出如下異常.
    文件可以下載,但特別慢并且打開是亂碼。
    <2004-2-19 下午09時14分34秒> <Error> <HTTP> <101019> <[ServletContext(id=325867,
    name=csrc,context-path=/csrc)] Servlet failed with IOException
    java.net.ProtocolException: Exceeded stated content-length of: '548352' bytes
            at weblogic.servlet.internal.ServletOutputStreamImpl.checkCL(ServletOutp
    utStreamImpl.java:220)
            at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutput
    StreamImpl.java:170)
            at com.jspsmart.upload.SmartUpload.downloadFile(SmartUpload.java:986)
            at com.jspsmart.upload.SmartUpload.downloadFile(SmartUpload.java:355)
            at com.jspsmart.upload.SmartUpload.downloadFile(SmartUpload.java:336)
            at jsp_servlet._test.__do_download._jspService(__do_download.java:102)
            at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
            at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:1058)
            at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:401)
            at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:306)
            at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
    n.run(WebAppServletContext.java:5445)
            at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
    eManager.java:780)
            at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:3105)
            at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2588)
            at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
            at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
    >

    解決方法:把所有<%和%>之外的空格字符都取掉就好了.參考如下:
    <%@ page contentType="text/html;charset=GBK" import="com.jspsmart.upload.*" %><%
    //取得服務(wù)器存放文件的路徑
    String reportTemplatePath = (String)session.getAttribute("reportTemplatePath");
    //文件名
    String filename = reportTemplatePath + "/" + request.getParameter("filename");
    filename = new String(filename.getBytes(),"ISO-8859-1");
    // 新建一個SmartUpload對象
    SmartUpload su = new SmartUpload();
    // 初始化
    su.initialize(pageContext);
    //設(shè)定contentDisposition為null以禁止瀏覽器自動打開文件,保證點擊鏈接后是下載文件。若不設(shè)定,則下載的文件擴(kuò)展名為
    //doc時,瀏覽器將自動用word打開它。擴(kuò)展名為pdf時,瀏覽器將用acrobat打開。
    su.setContentDisposition(null);
    // 下載文件
    su.downloadFile(filename);
    %>

     

    posted on 2008-06-02 16:04 紙飛機(jī) 閱讀(3798) 評論(2)  編輯  收藏

    評論

    # re: 用jspsmart下載文件異常(tomcat正常,weblogic不行) 2008-06-02 16:50 隔葉黃鶯
    留個印象,還是 Tomcat 的兼容性較強(qiáng)。
    記得原來寫個 jsp 的注釋寫成了
    <%-- 注釋 ---%>

    在 tomcat 下通過,但放在 WAS 下報錯了,原因是 WAS 下要寫成

    <%-- 注釋 --%>

    WAS 愣是那么古板,多個橫線就要了它的命。  回復(fù)  更多評論
      

    # re: 用jspsmart下載文件異常(tomcat正常,weblogic不行) 2008-06-02 20:05 BeanSoft
    JSP 文件下載的相對完整代碼(解決中文問題和Weblogic報錯)
    http://www.tkk7.com/beansoft/archive/2007/02/01/97294.html

    <%
    // String filePath = "c:/文檔.doc";
    // 如果是 WEB APP 下的相對路徑文件, 請使用下列代碼:
    String filePath = application.getRealPath( " 測試文檔.htm " );
    boolean isInline = false ; // 是否允許直接在瀏覽器內(nèi)打開(如果瀏覽器能夠預(yù)覽此文件內(nèi)容,
    // 那么文件將被打開, 否則會提示下載)

    // 清空緩沖區(qū), 防止頁面中的空行, 空格添加到要下載的文件內(nèi)容中去
    // 如果不清空的話在調(diào)用 response.reset() 的時候 Tomcat 會報錯
    // java.lang.IllegalStateException: getOutputStream() has already been called for
    // this response,
    out.clear();

    // {{{ BEA Weblogic 必讀
    // 修正 Bea Weblogic 出現(xiàn) "getOutputStream() has already been called for this response"錯誤的問題
    // 關(guān)于文件下載時采用文件流輸出的方式處理:
    // 加上response.reset(),并且所有的%>后面不要換行,包括最后一個;
    // 因為Application Server在處理編譯jsp時對于%>和<%之間的內(nèi)容一般是原樣輸出,而且默認(rèn)是PrintWriter,
    // 而你卻要進(jìn)行流輸出:ServletOutputStream,這樣做相當(dāng)于試圖在Servlet中使用兩種輸出機(jī)制,
    // 就會發(fā)生:getOutputStream() has already been called for this response的錯誤
    // 詳細(xì)請見《More Java Pitfill》一書的第二部分 Web層Item 33:試圖在Servlet中使用兩種輸出機(jī)制 270
    // 而且如果有換行,對于文本文件沒有什么問題,但是對于其它格式,比如AutoCAD、Word、Excel等文件
    // 下載下來的文件中就會多出一些換行符0x0d和0x0a,這樣可能導(dǎo)致某些格式的文件無法打開,有些也可以正常打開。
    // 同時這種方式也能清空緩沖區(qū), 防止頁面中的空行等輸出到下載內(nèi)容里去
    response.reset();
    // }}}

    其它代碼照舊  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩VA无码中文字幕| 一级毛片不卡免费看老司机| 久久一本岛在免费线观看2020| 四虎影视永久免费观看| 亚洲αⅴ无码乱码在线观看性色 | 日本亚洲免费无线码 | 国产成人精品免费视频大全| 亚洲福利在线播放| 一区二区3区免费视频| 亚洲一区视频在线播放 | 亚洲av无码专区首页| 国产资源免费观看| 日韩精品视频在线观看免费| 国产性爱在线观看亚洲黄色一级片| yellow免费网站| 亚洲丝袜美腿视频| 在线观看视频免费完整版| 亚洲精品国产精品| 亚洲日韩VA无码中文字幕| 三上悠亚电影全集免费| 亚洲精品影院久久久久久| 成人免费网站在线观看| 九九久久精品国产免费看小说| 亚洲色WWW成人永久网址| 久久精品国产免费观看三人同眠| 一本色道久久88—综合亚洲精品| www.亚洲色图| 久久国产高潮流白浆免费观看| 亚洲熟妇成人精品一区| 不卡一卡二卡三亚洲| 国产高清免费视频| 牛牛在线精品观看免费正| 亚洲国产精品国自产电影| 色www永久免费视频| a级毛片毛片免费观看永久| 亚洲成a人片在线观看中文!!!| 亚洲AV蜜桃永久无码精品| 人妻无码久久一区二区三区免费| 亚洲AV日韩AV一区二区三曲 | 精品国产免费一区二区| 日批视频网址免费观看|