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 ...
随机推荐
- BZOJ 4241 历史研究
Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...
- mybatis的物理分页:mybatis-paginator
github上有一个专门针对mybatis的物理分页开源项目:mybatis-paginator,兼容目前绝大多数主流数据库,十分好用,下面是使用步骤: 环境:struts2 + spring + m ...
- MFC下debug改成release版本出现问题及解决办法
自己在debug下成功运行了自己写的测试自己写第三方库的程序,这里有用到opencv库,所以同时用到了自己的库和opencv的库,需求因为要进行速度的测试,是想要把debug改成release版本,这 ...
- CodeSmith操作Access时字段的排序问题
最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致. 首先在ACCESS数据库中建一个测试表Test,并添加ID.Na ...
- c++虚函数注意事项
>在基类方法声明中使用关键字virtual,可以使该方法在基类及所有的派生类中是虚的 >如果使用指向对象的引用或指针来调用虚方法,程序将使用对象类型定义的方法,而不使用为引用或指针类型定义 ...
- SQL2005SP4补丁安装时错误: -2146233087 MSDTC 无法读取配置信息。。。错误代码1603的解决办法
是在安装slq2005sp3和sp4补丁的时候碰到的问题. 起先是碰到的错误1603的问题,但网上搜索的1603的解决办法都试过了,google也用了,外文论坛也读了,依然没有能解决这个问题. 其实一 ...
- Android Stduio统计项目的代码行数
android studio统计项目的代码行数的步骤如下: 1)按住Ctrl+Shift+A,在弹出的框输入‘find’,然后选择Find in Path.(或者使用快捷键Ctrl+Shift+F) ...
- sqlserver查询所有表名、字段名、类型、长度和存储过程、视图的创建语句
-- 获得存储过程创建语句 select o.xtype,o.name,cm.text from syscomments cm inner join sysobjects o on o.id=cm.i ...
- The Lifecycle and Cascade of WeChat Social Messaging Groups-www2016-20160512
分析性论文: 分析并预测微信群的生命周期,以及群成员的邀请模式. 参考资料:http://www.360doc.com/content/16/0423/11/26166517_553076725.sh ...
- poj-1314 Finding Rectangles
题目地址: http://poj.org/problem?id=1314 题意: 给出一串的点,有些点可以构成正方形,请按照字符排序输出. 因为这道题的用处很大, 最近接触的cv 中的Rectangl ...