response与文件下载详解编程语言

参考博客:

http://www.cnblogs.com/lcpholdon/p/4380980.html

http://www.cnblogs.com/mingforyou/p/3281945.html

之前在文件上传下载功能时遇到了一些问题

1.页面选了多文件,但是上传后后台只能接受单文件

2.不能异步上传,没有进度条

3.文件下载,文件名字中有中文时下载报错,下能下载文件

4.文件中有英文空格时,firefox下载时可能会丢失文件类型,导致不能正确打开

 

通过学习springMVC学习指南中,解决了1,2问题,3,4问题是朋友解决的

这里重点来讨论一下3,4问题。

首先下载文件的代码参考如下,代码来自于参考博客

//在servlet里读取资源 
//得到资源的绝对地址 
String path = this.getServletContext().getRealPath("/download/1.jpg"); 
//截取文件地址,最后一个斜杠后面的文件名 
String filename = path.substring(path.lastIndexOf("//") + 1); 
 
//设置以何种方式打开文件 
//下载的图片名为中文的,修改编码 
response.setHeader("Content-Disposition", "attachment;filename =" + URLEncoder.encode(filename, "utf-8")); 
response.setHeader("Content-Disposition", "attachment;filename" + filename); 
InputStream in = null; 
OutputStream out = null; 
 
try{ 
in = new FileInputStream(path); 
int len = 0; 
byte buffer[] = new byte[1024]; 
out = response.getOutputStream(); 
while((len = in.read(buffer)) > 0){ 
out.write(buffer, 0, len); 
} 
}finally{ 
if(in != null){ 
try{ 
in.close(); 
}catch(Exception e){ 
e.printStackTrace(); 
} 
} 
} 

上面有一行很重要的代码URLEncoder.encode(filename, “utf-8”);这个解决文件名字中有中文的问题。

这样貌似也可以

(1)MimeUtility.encodeWord(“中文.txt”);//现在版本的IE还不行

(2)new String(“中文”.getBytes(“GB2312″),”ISO8859- 1”);

详细的可以参考参考博客

问题4,只能把空格替换为其他符号了,或者去掉,目前没有更好的办法,也不知道原因,替换的话建议替换为中文空格或者下划线

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15377.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论