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

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

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

    紙飛機

      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è)定,則下載的文件擴展名為
    //doc時,瀏覽器將自動用word打開它。擴展名為pdf時,瀏覽器將用acrobat打開。
    su.setContentDisposition(null);
    // 下載文件
    su.downloadFile(filename);
    %>在tomcat中運行正常。
    在weblogic中運行拋出如下異常.
    文件可以下載,但特別慢并且打開是亂碼。
    <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è)定,則下載的文件擴展名為
    //doc時,瀏覽器將自動用word打開它。擴展名為pdf時,瀏覽器將用acrobat打開。
    su.setContentDisposition(null);
    // 下載文件
    su.downloadFile(filename);
    %>

     

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

    評論

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

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

    <%-- 注釋 --%>

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

    # re: 用jspsmart下載文件異常(tomcat正常,weblogic不行) 2008-06-02 20:05 BeanSoft
    JSP 文件下載的相對完整代碼(解決中文問題和Weblogic報錯)
    http://m.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)容一般是原樣輸出,而且默認是PrintWriter,
    // 而你卻要進行流輸出:ServletOutputStream,這樣做相當(dāng)于試圖在Servlet中使用兩種輸出機制,
    // 就會發(fā)生:getOutputStream() has already been called for this response的錯誤
    // 詳細請見《More Java Pitfill》一書的第二部分 Web層Item 33:試圖在Servlet中使用兩種輸出機制 270
    // 而且如果有換行,對于文本文件沒有什么問題,但是對于其它格式,比如AutoCAD、Word、Excel等文件
    // 下載下來的文件中就會多出一些換行符0x0d和0x0a,這樣可能導(dǎo)致某些格式的文件無法打開,有些也可以正常打開。
    // 同時這種方式也能清空緩沖區(qū), 防止頁面中的空行等輸出到下載內(nèi)容里去
    response.reset();
    // }}}

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: h片在线播放免费高清| 亚洲一卡2卡三卡4卡无卡下载| 精品视频免费在线| 天天干在线免费视频| 在线综合亚洲欧洲综合网站| 午夜国产精品免费观看| 亚洲制服丝袜第一页| 成视频年人黄网站免费视频| 亚洲av极品无码专区在线观看| 国产精品久久久久免费a∨| 33333在线亚洲| 国产91久久久久久久免费| 国产亚洲视频在线观看| 亚洲阿v天堂在线2017免费| 国产免费A∨在线播放| 亚洲色WWW成人永久网址| 日本免费高清视频| 亚洲国产一区二区a毛片| 麻豆视频免费观看| 亚洲国产精品成人AV在线| 又黄又爽的视频免费看| 久久国产精品免费一区| 亚洲av日韩av高潮潮喷无码| 亚洲成人免费网站| 国产亚洲精品AAAA片APP | 国产福利免费视频| 中文字幕人成人乱码亚洲电影| 久久综合九色综合97免费下载| 亚洲av无码久久忘忧草| 日本免费网站在线观看| 大妹子影视剧在线观看全集免费 | 夜夜亚洲天天久久| 久久精品网站免费观看| 男人j进女人p免费视频| 亚洲AV无一区二区三区久久| 中文字幕影片免费在线观看| 日韩大片在线永久免费观看网站 | 日本无卡码免费一区二区三区| 日产久久强奸免费的看| 亚洲综合激情视频| 免费大学生国产在线观看p|