我正在尝试上传文件,基本上我遇到了文件名编码的问题,当发送带有RestTemplate和文件名的multipart / form-data包含像“tésté.pdf”这样的字符重音时,服务器响应“ t?st?.pdf”,但是当我用邮递员/浏览器发送时,它有效!
我尝试了很多东西,例如使用utf-8设置MessageConverters,将字符串转换为字节并使用utf-8创建一个新的并设置为File,创建一个名称已在utf-8中转换的新文件等..我没有更多的想法来解决这个问题,我使用的是最新版本的spring-webmvc,4.3.2,但仍然无法正常工作。
String url = "https://someurl.com/api";
RestTemplate t = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
File file = new File("/Users/myuser/Desktop/tésté.pdf");
map.add("file", new FileSystemResource(file));
map.add("convert", "false");
map.add("thumb", 0);
String postForObject = t.postForObject(url, new HttpEntity<LinkedMultiValueMap>(map, headers), String.class);