使用RestTemplate在上传文件中具有重音字符时,文件名编码错误

时间:2016-08-03 21:36:35

标签: java spring encoding utf-8

我正在尝试上传文件,基本上我遇到了文件名编码的问题,当发送带有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);

0 个答案:

没有答案