servlet下载,解决文件名中有中文下载路径出现乱码不能正常下载问题
方法很多种,我只试用了两种。
主页面JSP中引入下载功能所需的js文件。引入的时候设置编码格式例如
<script type="text/javascript" charset="UTF-8" src="${rsc}/pages/communicate/message/receiveMessage.js"></script>
然后下载方法需改进。下面改进的下载方法是基于本博客里的另一篇文章serlvet下载中的下载方法,下载路径中拼接的参数不要作为方法中带的参数传递。直接用request获取。这样就不会自行转码。
@RequestMapping("/download")
@RolesAllowed(AuthorityDefine.ROLE_USER)
public void download(HttpServletRequest request,
HttpServletResponse response){
try{
String path=request.getParameter("path");
String cat=request.getParameter("cat");
File file = new File(Global.BASE_UPLOAD_FOLDER+"/"+ cat+"/"+path);
String filename = file.getName();
InputStream fis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.addHeader("Content-Disposition","attachment;filename="+ filename);
response.addHeader("Content-Length","" + file.length());
response.setContentType("application/octet-stream");
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
toClient.write(buffer);
toClient.flush();
toClient.close();
}
catch (IOException ex){
ex.printStackTrace();
}
}
还有一种方式 是直接修改
配置时需要在tomcat(即相应的Servers)中的server.xml文件中的 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
/>加入useBodyEncodingForURI="true"
servlet下载,解决文件名中有中文下载路径出现乱码不能正常下载问题的更多相关文章
- 怎么解决svn清理失败且路径显示乱码问题
http://jingyan.baidu.com/article/295430f1d728830c7e0050f9.html 上面这个网址是百度经验给的方法,我也是参照这个方式解决了问题,虽然是解决了 ...
- PHP中调用SVN命令更新网站方法(解决文件名包含中文更新失败的问题)
想说写一个通过网页就可以执行 SVN 升级的程序,结果并不是我想得那样简单,有一些眉角需要注意的说. 先以 Apache 的用户帐号执行 SVN checkout,这样 Apache 才有 SVN 的 ...
- 解决JS获取中文参数出现的乱码问题
在代码中增加如下js函数: function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + " ...
- XFTP连接主机文件名显示中文乱码且不能下载的解决方法
Xftp连接主机文件名显示中文乱码且不能下载的本地解决方法 原因:Xftp编码格式问题 解决方法:把Xftp的编码格式增加UTF-8 具体步骤:打开Xftp,文件-属性,在打开的属性界面中打开&quo ...
- Servlet 下载文件及支持中文文件名
Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...
- php下载解决中文乱码问题
利用 iconv() 函数解决乱码 $file_name = iconv("utf-8","gb2312",$file_name); 具体下载代码如下: pub ...
- 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码
利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏 ...
- java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况
比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...
- iOS - 网址、链接、网页地址、下载链接等正则表达式匹配(解决url包含中文不能编码的问题)
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母.标号中除连字符(-)外不能使用其他的标点符号.级别最低的域名写在最左边,而级别最高的域名写在最右边.由多 ...
随机推荐
- 对return 语句的正确性和效率进行检查
注意事项如下: 1. return 语句不可返回指向"堆栈内存“的”指针“或者”引用“,因为该内存单元在函数体结束时被自动释放. //错误 char* Func(void) { char s ...
- JQuery 获取checkbox被选中的值
html代码 <ul id="dxbox"> <li><input type=" ...
- C复习手记(Day1)
auto存储类:所有局部变量默认的存储类 ex:{int mount;auto int month} auto只用在函数内,只做局部变量 register 存储类:register 存储类用于定义 ...
- Oracle 分区表中索引失效
当对分区表进行 一些操作时,会造成索引失效. 当有truncate/drop/exchange 操作分区 时全局索引 会失效. exchange 的临时表没有索引,或者有索引,没有用includin ...
- cocos2dx 动画 一
1.精灵的runAction方法 spt = Sprite::create("pean.jpg"); this->addChild(spt); MenuItemFont *i ...
- eclipse使用和优化配置
一.简介 eclipse 可谓是Java开发界的神器,基本占据了大部分的Java开发市场,而且其官方还对其他语言提供支持,如C++,Ruby,JavaScript等等.为 什么使用它?我想离不开下面的 ...
- 东软实训3-servlet基础
Java Servlet技术的核心就是在服务端创建能响应用户请求的对象,被创建的对象习惯上称为一个Servlet对象. 编写一个创建servlet对象的类就是编写一个特殊类的子类,这个特殊的类就是ja ...
- poj1418 Viva Confetti 判断圆是否可见
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Viva Confetti Time Limit: 1000MS Memory ...
- Selinux 禁用
Selinux是对于强制访问控制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件. 对于新手来说会影响我们的操作.一般情况下是不需要的,所以禁用他,如果需要的情况下,我们可以 ...
- HTML元素遮挡Flash之梦
wmode参数: transparent模式:可用z-index控制层级 opaque模式:可用z-index控制层级 window模式:flash层级在浏览器核心显示窗口之上,flash会盖住与他重 ...