参考博客:

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. 临时表之IF-ELSE

    1.解决输出单列到临时表 场景:存储过程传入id,id为缺省的过滤条件,如果id为0,则查找出tt表中的所有id作为过滤条件 目的:id不为0时,过滤id 解决:用case when来代替if els ...

  2. sublime配置文件

    起初是为了解决 tab转四个空格问题 安装包 Sublime_Text_Build_3103_x64_CHS_Lfqy.exe 配置方法 配置脚本 { "bold_folder_labels ...

  3. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T01——T10

    T01 矩阵交换行 描述 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果. 输入 输入共6行,前5行为矩阵的每一行元素,元 ...

  4. oracle:db-link使用

    二个oracle instance,如果需要在一个instance上,直接查询另一个instance上的数据,就要用到db-link 创建: create public database link 链 ...

  5. json解析性能比较(gson与jackson) (zz)

    现在json的第三方解析工作很多,如json-lib,gson,jackson,fastjson等等.在我们完成一般的json-object转换工作时,几乎都没有任何问题.但是当数据的量上来时,他们的 ...

  6. Theano2.1.9-基础知识之条件

    来自:http://deeplearning.net/software/theano/tutorial/conditions.html conditions 一.IfElse vs Switch 这两 ...

  7. 端口被占用的解决方案 sql server 10048 错误

    一大早发现sql server服务无法启动,10048错误,一查是端口占用. 先找到哪个进程,结束即可. cmd命令, netstat /ano|findset "1433" 出现 ...

  8. .NET CLR 运行原理

    原文: Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects 文章讨论了: SystemDoma ...

  9. 自定义圆形控件RoundImageView并认识一下attr.xml

    今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学 ...

  10. sql 几点记录

      1       With子句 1.1     学习目标 掌握with子句用法,并且了解with子句能够提高查询效率的原因. 1.2     With子句要点 with子句的返回结果存到用户的临时表 ...