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,只能把空格替换为其他符号了,或者去掉,目前没有更好的办法,也不知道原因,替换的话建议替换为中文空格或者下划线
response与文件下载的更多相关文章
- Http响应response(文件下载、验证码)
Http响应response response:响应 作用: 往浏览器写东西 组成部分: 响应行 响应头 响应体 操作响应行 格式: 协议/版本 状态码 状态码说明 状态码: 1xx:已发送请求 2x ...
- response实现文件下载
package cn.itcast.response; import java.io.FileInputStream; import java.io.IOException; import java. ...
- 使用response实现文件下载功能
response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("u ...
- 使用response实现文件下载注意点
创建web工程,使用response实现文件的下载. 在webRoot下创建download文件,里面包含要下载的文件,现在把源码贴上来,然后再说我遇到的问题 public class DownLoa ...
- java web response提供文件下载功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- response 输出中文数据 文件下载
使用OutputStream或者PrintWriter向客户端浏览器输出中文数据 package com.xc.response; import java.io.IOException; import ...
- spring4 文件下载功能
需要准备的工具和框架 Spring 4.2.0.RELEASE Bootstrap v3.3.2 Maven 3 JDK 1.7 Tomcat 8.0.21 Eclipse JUNO Service ...
- JavaWeb基础:Servlet Response
ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...
- ASP.NET 实现PDF文件下载
本文介绍了一种在ASP.NET中下载文件的方法. 方法一:可能是最简单的.最短的方式: Response.ContentType = "application/pdf"; Resp ...
随机推荐
- python执行linux shell管道输出内容
干净不留痕,用过都说好. echo "print 1+1" |python
- 去除项目中的SVN标记
第一步:建立一个名字叫做remove-svn-folders.reg的文本(先建立txt文件,然后粘贴内容后再修改文件名字),记得后缀要叫.reg.文本的内容为: Windows Registry E ...
- 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
20145221 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 实验报告 队友博客:20145326蔡馨熠 实验博客:<信息安全系统设计基础>实验五 简单嵌入式W ...
- byte[] 转字符串 中文乱码
闲来无事,写了一个UWP的UDP/TCP小Demo,网上找了个网络调试助手,就兴冲冲的开始玩耍 结果“鸡同鸭讲”: 讲英文的时候大家都是abc,hello man!how are you? 讲中文的时 ...
- 在线程中调用SaveFileDialog
在多线程编程中,有时候可能需要在单独线程中执行某些操作.例如,调用SaveFileDialog类保存文件.首先,我们在Main方法中创建了一个新线程,并将其指向要执行的委托SaveFileAsyn.在 ...
- js的单引号,双引号,转移符
这里我们看到想在style后边在插入一个样式的变量,data.cssSytle.a是做边和邮编都是"",并且没有转移符
- [BZOJ2654]tree(二分+MST)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2654 分析:此题很奇葩,我们可以给所有白边加上一个权值mid,那么在求得的MST中白边 ...
- poj-1314 Finding Rectangles
题目地址: http://poj.org/problem?id=1314 题意: 给出一串的点,有些点可以构成正方形,请按照字符排序输出. 因为这道题的用处很大, 最近接触的cv 中的Rectangl ...
- cxf和spring结合
服务端: 实体: package entity; import java.util.Date; /*** 实体 */ public class Pojo { //温度 private String d ...
- Git与GitHub到底有什么联系?
Git与GitHub区别 git 是一个软件 版本控制器 分享合并代码, 团队开发 时间机器, 可以获取到任意阶段时间节点开发的代码, 代码找回 git, cvs, bitkeeper, svn 典型 ...