Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
来源:互联网 发布:mysql 什么情况锁表 编辑:程序博客网 时间:2024/05/12 23:59
1、文件上传
通过表单上传文件时,如果文件名存在中文则会发生乱码。
<form name="myform" action="/fileManager/uploadFile" method="post" enctype="multipart/form-data" accept-charset="utf-8" > <input type="text" name="path"> <input type="file" name="file"><br> <input type="submit" name="submit" value="submit"></form>
后端使用Jersey:
@POST@Path("/uploadFile")@Consumes(MediaType.MULTIPART_FORM_DATA+";charset=utf-8")public String uploadFile( @FormDataParam("path") String path, @FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition fileMetaData);
调用 String fileName=fileMetaData.getFileName();
得到的文件名,包含中文时总会乱码。
1.最先想到是没有设置request的编码方式
request.setCharacterEncoding("UTF-8");
设置后依然会乱码
2.Jersey设置Consumer的MediaType
@Consumes(MediaType.MULTIPART_FORM_DATA+";charset=utf-8")
上传的文件名包含中文时,依然会乱码
3.检查form表单和html页面编码,均为UTF-8
后查阅资料解决了该问题:
是由于Content-Disposition请求信息中的编码为ASCII编码,所以需要对请求中的信息进行编码。
1.前端页面通过js编码文件名,encodeURL(filename)
2.后台再Decode就可以得到正确的文件名
String fileName=URLDecoder.decode(fileMetaData.getFileName(),"UTF-8");
2、文件下载
问题:下载文件时,弹出框显示的文件名中文乱码,(在Chrome中正常,在火狐和IE中不能正常显示文件名,或者显示的文件名未解码)
原因:http协议的问题。具体分析见下面的URL
解决办法:添加
filename*=UTF-8'' + URLEncoder.encode(fileName,"UTF-8")
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));response.setContentType("application/octet-stream");response.setCharacterEncoding("UTF-8");
原文链接
http://blog.csdn.net/candyguy242/article/details/17449191
0 0
- Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
- http上传/下载文件时,Content-Disposition的使用
- JavaEE_Web文件下载_lesson2_ JavaEE下载文件,中文乱码解决方法(Content-Disposition)
- 正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- Servlet——使用http响应头Content-Disposition下载文件的示例
- <转载>正确处理下载文件时HTTP头的编码问题(Content-Disposition)
- 文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
- 正确处理下载文件时中文文件名乱码的问题(Content-Disposition)
- 文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
- 探究 Content-Disposition:解决下载中文文件名乱码
- 【转】文件下载中文显示 content-disposition 正确设置
- struts2文件下载 Content-disposition
- java文件下载中Content-disposition的定义
- 设置响应头的Content-Disposition属性,实现文件下载示例
- Content-Disposition 响应头,设置文件在浏览器打开还是下载
- Content-Disposition 响应头
- Content-Disposition 响应头
- Content-Disposition 响应头
- 获取当前日期并给当前日期增加天数 年数 月数
- 单读单写无锁循环队列
- Bug记录
- 屏幕截图
- 前端基础
- Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
- 根据身高计算标准体重
- 虚拟机上设置静态IP的做法
- 理解Android中ThreadLocal的工作原理
- iOS 实现模糊效果
- 解析请求数据
- Android_ButterKnife元素值必须为常量表达式
- Android ViewPager详解
- List 内存空间