参考博客:

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,只能把空格替换为其他符号了,或者去掉,目前没有更好的办法,也不知道原因,替换的话建议替换为中文空格或者下划线

response与文件下载的更多相关文章

  1. Http响应response(文件下载、验证码)

    Http响应response response:响应 作用: 往浏览器写东西 组成部分: 响应行 响应头 响应体 操作响应行 格式: 协议/版本 状态码 状态码说明 状态码: 1xx:已发送请求 2x ...

  2. response实现文件下载

    package cn.itcast.response; import java.io.FileInputStream; import java.io.IOException; import java. ...

  3. 使用response实现文件下载功能

    response.setContentType("text/html;charset=utf-8");  response.setCharacterEncoding("u ...

  4. 使用response实现文件下载注意点

    创建web工程,使用response实现文件的下载. 在webRoot下创建download文件,里面包含要下载的文件,现在把源码贴上来,然后再说我遇到的问题 public class DownLoa ...

  5. java web response提供文件下载功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. response 输出中文数据 文件下载

    使用OutputStream或者PrintWriter向客户端浏览器输出中文数据 package com.xc.response; import java.io.IOException; import ...

  7. spring4 文件下载功能

    需要准备的工具和框架 Spring 4.2.0.RELEASE Bootstrap v3.3.2 Maven 3 JDK 1.7 Tomcat 8.0.21 Eclipse JUNO Service ...

  8. JavaWeb基础:Servlet Response

    ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...

  9. ASP.NET 实现PDF文件下载

    本文介绍了一种在ASP.NET中下载文件的方法. 方法一:可能是最简单的.最短的方式: Response.ContentType = "application/pdf"; Resp ...

随机推荐

  1. Lobes of the brain

    Source: https://en.wikipedia.org/wiki/Lobes_of_the_brain (Except for the last figure) Terminologia A ...

  2. 为easyui datagrid 添加上下方向键移动

    将以下脚本保存为 easyui-datagrid-moverow.js var DatagridMoveRow = (function($){ function DatagridMoveRow(gri ...

  3. python数字图像处理(19):骨架提取与分水岭算法

    骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内. 1.骨架提取 骨架提取,也叫二值图像细化.这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示. m ...

  4. RelayCommand

    RelayCommand Mvvm最大的特点就是分离了View和ViewModel,将数据的显示和业务逻辑分开.使用WPF的Binding,我们不仅能够 将数据从ViewModel绑定到View,同时 ...

  5. 2015-2016-2 《Java程序设计》项目小组博客

    2015-2016-2 <Java程序设计>项目小组博客 1451 完+美 java项目 守望先疯 JavaGroup 07_10_20_22 FromBottomToTop L.G.Su ...

  6. swift——启动页国际化:一步一步动态加载启动页图片,启动的时候加载文字

    由于公司的需求,要求做一个国际化的启动页,因为app我也弄国际化了,就剩下启动页国际化未完成,百度了呵谷歌了好多答案都不尽如人意,最后也是看见同事完成,我也问了具体的做法,决定分享给需要的人,免得和我 ...

  7. exgcd,求乘法逆元

    procedure exgcd(a,b:int64); var t:longint; begin then begin x:=;y:=; exit; end else exgcd(b,a mod b) ...

  8. C程序中对时间的处理——time库函数详解

    包含文件:<sys/time.h> <time.h> 一.在C语言中有time_t, tm, timeval等几种类型的时间 1.time_t time_t实际上是长整数类型, ...

  9. name after, name for, name as

    name after, name for, name as name after是一个常见用法  :  1.Her parents named her Sophia after her grandmo ...

  10. 【转】java.util.ResourceBundle使用详解

    原文链接:http://lavasoft.blog.51cto.com/62575/184605/ 人家写的太好了,条理清晰,表达准确.   一.认识国际化资源文件   这个类提供软件国际化的捷径.通 ...