由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>

通过NSURLSessionDownloadTask代理实现下载大文件

// // ViewController.m // NSURLSessionDownloadTask // // Created by hq on 16/4/17. // Copyright ...
  • baohanqing
  • baohanqing
  • 2016年04月17日 16:18
  • 1277

PHP解决IE浏览器下载文件名乱码问题

网站开发中,经常会碰到下载文件功能,某些需求就要下载文件名为中文。 一般输出中文都会用UTF-8编码,但IE浏览器的一些版本转换下载文件名时,并不使用UTF-8编码,导致文件名乱码。测试了名为“中文...
  • u013828206
  • u013828206
  • 2017年05月26日 13:50
  • 730

sap中Excel的模版上传和下载

sap中Excel的模版上传和下载 一:所用到的事物码:   Smw0 二:上传步骤        图1  图2    图3 注:“包”为你所在项目的包的名称。   ...
  • qq_19583479
  • qq_19583479
  • 2014年08月15日 17:35
  • 573

wget jdk 却是网页的解决办法

问题来源:阿里云上租了个ECS,然后想装个javaweb环境,首先得装JDK,可是wget一下,解压的时候出现了下面的问题!root@ixx:~# tar -zxvf jdk-8u65-linux-i...
  • suifengdeshitou
  • suifengdeshitou
  • 2015年10月25日 13:32
  • 332

[问题解决] maven仓库下载缓慢

maven下载jar的时候会去寻国外的地址,因此造成了下载jar很缓慢,影响开发效率,于是就出现maven镜像地址,可以使我们开发人员迅速下载相关的jar。在maven的config的setting....
  • hwj528
  • hwj528
  • 2016年11月16日 17:17
  • 778

Android中实现多线程下载的两种方式示例及浅析之一(无断点续传)

Android里面下载一般应该有两种方式,一种是多线程实现,一种是异步。而实现多线程在java里可以有两种方式,一种是多个线程实现同一个Runnable,另外就是将一个文件长度分为n个部分,然后让n个...
  • u012320459
  • u012320459
  • 2015年08月04日 08:33
  • 496

客户端从服务端下载文件的流程分析

客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下。服务器接受到该请求以后,马上运行该down.php文件运行该文件的时...
  • dahuzix
  • dahuzix
  • 2013年06月16日 22:23
  • 990

不成问题的问题 百度云资源

这部电影让范围获得了2016年的金马奖,所得其所,因为这部电影超出了期待,编剧功力很很高超,女性角色加得好,整个城镇对中国社会现实有一种微妙隐喻。这是一次趋近于完美的改编,和老舍先生的原著基本一脉相承...
  • qq_40930866
  • qq_40930866
  • 2017年11月04日 15:18
  • 5545

mini2440中QT4下载问题

1.触摸屏校正参数在/etc/pointercal
  • oLinXi1234567
  • oLinXi1234567
  • 2014年09月23日 21:29
  • 613

showModalDialog 下载文件问题

showDialog里好像不能用href,只能用onclick 最近在项目中经常用到模态窗口(showModalDialog),客户需要在一个模态窗口中有"生成Excel报表"并"导出"的功能。接到...
  • liyanping521
  • liyanping521
  • 2013年02月26日 16:34
  • 350
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由web应用中的下载中的问题
举报原因:
原因补充:

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