使用 Spring 的 RestTemplate 在后台模拟 post 请求上传文件,文件名乱码

2016-02-24 18:38:51 +08:00
 ne6rd
RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", addToken);
        MediaType type = MediaType.parseMediaType("multipart/form-data;charset=UTF-8");
        headers.setContentType(type);

        MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>();
        FileSystemResource fileSystemResource = new FileSystemResource("c:\\测试.txt");
        form.add("parent_dir", uploadPath);
        form.add("file", fileSystemResource);

        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(form, headers);
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);

Content-Disposition 我查了下好像只支持 ISO8859-1 编码,
尝试用这种方法手动转换过去也不行。

HttpHeaders headers2 = new HttpHeaders();
String cd = "form-data; name=\"file\"; filename=\"" + "测试" + "\"";
String cdEncode = new String(cd.getBytes("utf-8"), "iso8859-1");
headers2.add("Content-Disposition", cdEncode);
HttpEntity<FileSystemResource> fileSystemResourceHttpEntity = new HttpEntity<FileSystemResource>(fileSystemResource, headers2);
form.add("file", fileSystemResourceHttpEntity);

请问 java 后台上传文件应该怎么处理中文文件名?谢谢

12336 次点击
所在节点    问与答
1 条回复
arvintian
2017-05-31 18:26:12 +08:00
解决了吗?怎么解决的,分享一下,谢谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/258832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX