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

原创 2012年03月21日 17:54:49
       /**
* 附件下载

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

相关文章推荐

Web应用高级问题

  • 2008年01月02日 11:14
  • 13KB
  • 下载

Java Web应用动态生成PDF文件的问题整理

Java Web应用在给浏览器返回动态生成的PDF文件时,要确保发送的HTTP header消息中正确设置了相应参数,否则浏览器可能无法获取到或者获取到错误的PDF文件。整理了下这些参数的设置方法,还...

Web应用程重复登录问题

  • 2014年02月27日 16:26
  • 573KB
  • 下载

Web应用程序的发布问题

今天学习到了一个让大家见笑的问题了。 现在在维护一个项目,由于这个项目的开发者能力有限,咱的水平也比较次,所以频发这样那样的,问题。 经过了一次又一次的bug修改,终于达到了预期的目的了。也从中学...

Web应用的性能问题分析

  • 2011年09月10日 11:32
  • 429KB
  • 下载

Web应用安全测试问题对策

Web应用的安全性是每个应用必须满足的非功能需求之一,安全测试涉及的内容很多,这里主要对安全测试后常见问题的修改做一个简单记录,如果有相同问题可以略做参考。下面以常用的appScan的安全测试涉及的主...

关于web应用中跨域问题的解决方案,并特别针对移动方向提出一些解决方案

由于浏览器的安全限制,网络连接的跨域访问时不被允许的,当然其中也包括了XmlHttpRequest。但是,有些时候我们需要通过跨域访问来获取一些资源,例如: 作为用户,我们需要在自己的网站用AJAX...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由web应用中的下载中的问题
举报原因:
原因补充:

(最多只允许输入30个字)