由web应用中的下载中的问题

来源:互联网 发布:华图网校网络课程 编辑:程序博客网 时间:2024/05/16 09:09
       /**
* 附件下载

* @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>

原创粉丝点击