java - 使用 Rest 模板发送文件时 MultipartFile 为 null

标签 java spring spring-mvc multipartform-data resttemplate

嗨,我有 2 个独立的应用程序。

第一个是发送post请求: 我正在尝试将文件发送到第二个应用程序

public static String httpPostMultipartFile(String url, File file) throws IOException{
    RestTemplate restTemplate = new RestTemplate();
    MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>();
    parameters.add("file", file); // load file into parameter
    HttpHeaders headers1 = new HttpHeaders();
    headers1.setContentType(MediaType.MULTIPART_FORM_DATA);
    String result = restTemplate.exchange(
            url,
            HttpMethod.POST,
            new HttpEntity<MultiValueMap<String, Object>>(parameters, headers1),
            String.class
        ).getBody();
    return result;

这是第二个收到发布请求的应用

@RequestMapping(value = "/fileupload/save", method = RequestMethod.POST, produces = "text/plain")
@ResponseBody
public String save(@RequestParam(value = "file", required = false) MultipartFile file, @RequestParam(required = false) Boolean suggestTranspose, @RequestParam(value = "transformers", required = false) String transformersString, @RequestParam(required = false) Integer brandId) throws Exception {
.....
}

但是在我的第二个应用程序中,其余调用中的 MultipartFile 实际上为 null

我发现这个链接对我没有帮助 link 1

link 2

最佳答案

您的 httpPost Multipart File 方法应如下所示。您需要使用 new FileSystemResource(file.getPath()) 添加文件。

public static String httpPostMultipartFile(String url, File file) throws IOException{
   RestTemplate restTemplate = new RestTemplate();
        MultiValueMap<String, Object> multipartMap = new LinkedMultiValueMap<String, Object>();     
        multipartMap.add("file", new FileSystemResource(file.getPath()));
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<Object> request = new HttpEntity<Object>(multipartMap, headers);         
        String result = restTemplate.exchange(
                url,
                HttpMethod.POST,
                request,
                String.class
            ).getBody();

        return result;
}

关于java - 使用 Rest 模板发送文件时 MultipartFile 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349046/

相关文章:

java - 服务层和 DAO 层中的 Spring 事务

java - 将 JButton 添加到 JScrollPane

java - 我在任何 Spring 组件中获得哪个 EntityManager 副本?

java - Spring MappedInterceptor 映射语法

java - 如何在spring bean配置文件中获取tomcat中的Server Home目录路径

java - 表中的行顺序

java - 面向对象的方法结构 - 什么是允许的?

java - 如何在部分更新PATCH Spring Boot MVC时自动添加Bean Validation

java - 如何等待QueueChannel处理所有消息?

spring - 为什么需要 Autowiring ? Autowiring 的概念如何解释?