2007年01月22日

servlet直接輸出檔案

本來用firefox測試程式碼是ok的,但沒想到pm拿ie一測,發現運作結果跟firefox是不相同,一些處理心得分享

if (httprequest.getProtocol().compareTo("HTTP/1.0") == 0) {
        httpresponse.setHeader("Pragma", "No-cache");
      }else if (httprequest.getProtocol().compareTo("HTTP/1.1") == 0) {
        httpresponse.setHeader("Cache-Control", "No-cache");
      }
      MimetypesFileTypeMap MIME_TYPES = new MimetypesFileTypeMap();
      //判別檔案類型
      httpresponse.setContentType(MIME_TYPES.getContentType(fileName));
      if (httprequest.getHeader("User-Agent").indexOf("MSIE 5.5") != -1) {
        httpresponse.setHeader("Content-Disposition","filename=" +
            new String(fileName.getBytes("Big5"),"ISO8859_1"));
      }
      else {
        httpresponse.addHeader( "Content-Disposition", "attachment;filename=" +
            new String(fileName.getBytes("Big5"),"ISO8859_1"));
      }
      httpresponse.setContentType("application/octet-stream");      
      httpresponse.getOutputStream().write("你的檔案的byte");
      httpresponse.setStatus(httpresponse.SC_OK);
      httpresponse.flushBuffer();

Posted by my_work at 樂多Roodo! │17:05 │回應(1)引用(0)java
樂多分類:網路/3C 共同主題:java 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2662917
回應文章
印象中,IE 必須取得 HTTP 串流的長度,所以之前在輸出 pdf 時是先把 pdf 寫到位元陣列串流中,再吐長度給 IE 。
Posted by Ada at 2007年01月23日 11:18