gpt4 book ai didi

java - 带重音符号的 Spring RestTemplate 文件名

转载 作者:行者123 更新时间:2023-12-01 09:06:42 25 4
gpt4 key购买 nike

我在使用 Spring RestTemplate 上传文件时遇到问题。如果文件包含带有重音符号的字符,则原始文件名未正确编码且未通过线路正确发送。带重音的字符在服务器上显示时带有问号。

如果我使用 Postman 或 Advanced Rest Client,它就可以工作。当使用wireshark嗅探时,我可以看到这两个工具对文件名的编码不同。有人知道如何让 RestTemplate 正确处理文件名中的重音吗?

下面是我用来调用 Web 服务端点的代码。

final String fileName = "Sécurité report.pdf";
final LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("file", new ClassPathResource(fileName));
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

final HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(map, headers);

final RestTemplate restTemplate = new RestTemplate();
final ResponseEntity<String> result = restTemplate.exchange("http://localhost:8080", HttpMethod.POST, requestEntity, String.class);

最佳答案

您需要将 UTF-8 消息转换器添加到 RestTemplate

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

另请参阅:How can I tell RestTemplate to POST with UTF-8 encoding?

关于java - 带重音符号的 Spring RestTemplate 文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41212718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com