Multipart上传filename乱码
来源:互联网 发布:室内设计上海知乎 编辑:程序博客网 时间:2024/06/06 18:48
使用httpClient上传文件,文件名是中文,需要设置http为兼容模式,否则会使用mime默认的编码(US-ASCII),中文文件名就乱码了,源码分析如下。
HttpBrowserCompatibleMultipart
浏览器兼容模式 (设置的charset)(UTF-8),文件名正常
编码过程如下:
private static void writeBytes( final String s, final Charset charset, final OutputStream out) throws IOException { final ByteArrayBuffer b = encode(charset, s); writeBytes(b, out); } protected static void writeField( final MinimalField field, final Charset charset, final OutputStream out) throws IOException { writeBytes(field.getName(), charset, out); writeBytes(FIELD_SEP, out); writeBytes(field.getBody(), charset, out); writeBytes(CR_LF, out); }
结果:
--mFDXEYYXySUoUuFmPQ2yjojbK0_qgR8Z4V
Content-Disposition: form-data; name="uploadFile2"; filename="中文.mp4"
Content-Type: video/mp4
HttpStrictMultipart
浏览器严格模式 MIME.DEFAULT_CHARSET (US-ASCII),文件名乱码了
编码过程如下:
private static void writeBytes( final String s, final OutputStream out) throws IOException { final ByteArrayBuffer b = encode(MIME.DEFAULT_CHARSET, s); // US-ASCII writeBytes(b, out); } protected static void writeField( final MinimalField field, final OutputStream out) throws IOException { writeBytes(field.getName(), out); writeBytes(FIELD_SEP, out); writeBytes(field.getBody(), out); writeBytes(CR_LF, out); }
结果
--k8ni5k102LlgW3Ez5ktsImNa3lMr5tB8FPe_e
Content-Disposition: form-data; name="uploadFile2"; filename="??.mp4"
Content-Type: video/mp4
Content-Transfer-Encoding: binary
设置方法:
MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.setCharset(Charset.forName("UTF-8"));builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
阅读全文
0 0
- Multipart上传filename乱码
- SpringMVC multipart文件上传
- SpringMVC multipart(文件上传)
- SpringMVC multipart文件上传
- SpringMVC multipart文件上传
- 文件下载filename乱码问题
- //上传字段 String fileName=item.getName(); fileName=fileName.substring(fileName.lastIndexOf(
- 文件上传 form 表单 enctype="multipart/form-data" 乱码解决
- 【OSS】OSS的Multipart上传
- multipart方式上传图片(HttpURLConnection)
- multipart/form-data 上传文件
- springBoot multipart 上传文件大小设置
- 通过ajax上传multipart文件
- springmvc + multipart 实现文件上传
- Content-disposition","attachment; filename=中文名 乱码
- filename
- retrofit2.0图片上传filename问题
- 解决multipart/form-data上传的问题
- linux下安装mysql简单的方法
- 判断angular渲染页面完成
- OpenLayers简介
- 数字-字符串转换
- 2017.08.15【NOIP 普及组】模拟赛C组总结
- Multipart上传filename乱码
- 【bzoj1041】[HAOI2008]圆上的整点
- netty
- spark 源代码分析 (二)spark启动过程
- react native 整合极光推送(Android)
- JdbcTemplate简介
- GitHub上README.md教程
- Ubuntu14.04下搜狗输入法安装(亲测)
- 欢迎使用CSDN-markdown编辑器