* 附件下载
*
* @throws IOException
*/
public ModelAndView downLoadEnclHandler(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = Utils.trim(request.getParameter("id"));
Map param = new HashMap();
param.put("id", id);
Response resp = enclService.getEncl(param);
Encl encl = (Encl) resp.getReturnObject();
String enclName = "";
String type=request.getParameter("type");
byte[] enclContent = null;
if (encl != null && !Utils.strIsNull(encl.getEnclname() )) {
enclName = encl.getEnclname();
String enclFormat = encl.getEnclformat();
if("pdf".equals(type)){
enclName = enclName.substring(0,enclName.indexOf(enclFormat))+"pdf";
enclContent = encl.getPdf();
//response.setContentType("application/pdf; charset=gb2312 ");
}else{
enclContent = encl.getEnclcontent();
//response.setContentType(encl.getContenttype());
}
//response.setContentType(encl.getContenttype());
byte[] bytes = enclName.getBytes("GBK");String encoded = new String(bytes, "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + encoded);
FileCopyUtils.copy(enclContent, response.getOutputStream());
} else {
return null;
}
return null;
}
如上的一些代码,粗糙了点,大体意思就是对附件进行下载,从数据库中获得blob类型的doc附件或者是pdf附件,利用
spring的FileCopyUtils.copy的方法提供的下载方式。之前没有if .....else....中的注释,只有外面的,是ok的,最近出问题了,不知道啥情况,在网上看的如下:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不必认为是浏览器的问题,大多数浏览器应该不会死皮赖脸地把二进制文件当作文本打开,一般都是服务器给什么浏览器就开什么.解决方法:
打开conf/web.xml,加入下面的代码.
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/msexcel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/rar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>application/txt</mime-type>
</mime-mapping>
<mime-mapping>
<extension>chm</extension>
<mime-type>application/mshelp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
重启TOMCAT,清除IE缓存,再打开RAR的文件时就可以正常下载了.
常见的MIME类型
超文本标记语言文本 .htm,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3.对html静态页面设置编码
-->
< mime-mapping >
< extension > htm </ extension >
< mime-type > text/html;charset=gb2312 </ mime-type >
</ mime-mapping >
< mime-mapping >
< extension > html </ extension >
< mime-type > text/html;charset=gb2312 </ mime-type >
</ mime-mapping >
</ web-app >