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

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

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

    紙飛機

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

    用jspsmart下載文件JSP代碼如下:
    <%@ page contentType="text/html;charset=GBK" import="com.jspsmart.upload.*" %><%
    //取得服務器存放文件的路徑
    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);
    //設定contentDisposition為null以禁止瀏覽器自動打開文件,保證點擊鏈接后是下載文件。若不設定,則下載的文件擴展名為
    //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.*" %><%
    //取得服務器存放文件的路徑
    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);
    //設定contentDisposition為null以禁止瀏覽器自動打開文件,保證點擊鏈接后是下載文件。若不設定,則下載的文件擴展名為
    //doc時,瀏覽器將自動用word打開它。擴展名為pdf時,瀏覽器將用acrobat打開。
    su.setContentDisposition(null);
    // 下載文件
    su.downloadFile(filename);
    %>

     

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

    評論

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

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

    <%-- 注釋 --%>

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

    # 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 ; // 是否允許直接在瀏覽器內打開(如果瀏覽器能夠預覽此文件內容,
    // 那么文件將被打開, 否則會提示下載)

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

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

    其它代碼照舊  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 日韩毛片无码永久免费看| 国产四虎免费精品视频| 国产在线观看免费不卡| 亚洲av无码日韩av无码网站冲| 亚洲三级高清免费| 色老板亚洲视频免在线观| 日本最新免费网站| 亚洲av无码国产综合专区| 永久免费毛片在线播放| 亚洲精品二三区伊人久久| 最近免费中文字幕大全视频 | 亚洲熟女一区二区三区| 韩国免费A级毛片久久| 亚洲va无码手机在线电影| 亚洲视频在线免费观看| 国产成+人+综合+亚洲专| 天天摸天天操免费播放小视频| 亚洲精品无码专区| 亚洲女人被黑人巨大进入| 国产一区二区三区免费观在线| 亚洲AV无码国产精品麻豆天美 | 亚洲精品又粗又大又爽A片| 国产一区二区三区免费看| free哆拍拍免费永久视频| 亚洲视频2020| 女人18一级毛片免费观看| 一级毛片高清免费播放| 久久精品国产精品亚洲艾| AV免费网址在线观看| 污污污视频在线免费观看| 久久精品国产亚洲| 两个人的视频高清在线观看免费| 偷自拍亚洲视频在线观看| 亚洲精品无码不卡在线播HE| 中文毛片无遮挡高潮免费| 老司机午夜在线视频免费观| 亚洲AV无码一区二区二三区软件| 免费A级毛片无码无遮挡内射| 免费福利在线观看| 亚洲另类视频在线观看| 国产女高清在线看免费观看|