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