Spring rest 控制器“MultipartFile[] multipartFile”总是接收 [] 或 null 文件

Posted

技术标签:

【中文标题】Spring rest 控制器“MultipartFile[] multipartFile”总是接收 [] 或 null 文件【英文标题】:Spring rest controller's " MultipartFile[] multipartFiles" always recieves [ ] or null files 【发布时间】:2016-11-03 07:25:42 【问题描述】:

我正在使用带有 Java Config 的 Spring 4。我希望将多个文件上传到服务器,但问题是我的 MultipartFile[ ] 参数将始终收到 empty/[ ] 参数。让我在这里分享我的代码是我的“AppConfig”

@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver()
    CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
    commonsMultipartResolver.setDefaultEncoding("utf-8");
    commonsMultipartResolver.setMaxUploadSize(50000000);
    return commonsMultipartResolver;

所以我注册了我的 multipartResolver,然后我写了这个控制器,它除了接收文件什么都不做。

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public List<PutObjectResult> upload(@RequestParam("file") MultipartFile[] multipartFiles) 

    System.out.println("Multipart file length is  "+multipartFiles.length);
    return s3Wrapper.upload(multipartFiles);

无论我从客户端发送多少图像/文件,我的 MultipartFile[] multipartFiles 始终为空/[]。我正在使用“PostMan”在这里发送我的文件是从“postMan”向多部分控制器发送请求的屏幕截图

【问题讨论】:

【参考方案1】:

你配置org.springframework.web.multipart.support.MultipartFilter了吗?

如果没有看到这个 SO post

【讨论】:

不,它会自动使用“public CommonsMultipartResolver multipartResolver()”方法进行配置。因为这是java config所以我们不需要xml。除此之外,我已经找到了我正在更新我的答案的解决方案,如果您发现这个问题,请使用完整的投票,以便将来其他人也可以获得帮助。谢谢【参考方案2】:

我只是通过在 jsp 中放置一个表单并使用表单提交测试我的方法解决了这个问题。我也使用 HttpClient 来发送请求并且它有效。我无法理解为什么,但不知何故,问题出在“PostMan”工具上,我通过该工具敲击了我的休息控制器。

【讨论】:

以上是关于Spring rest 控制器“MultipartFile[] multipartFile”总是接收 [] 或 null 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring REST API 上传文件

Spring Boot 控制器 - 将 Multipart 和 JSON 上传到 DTO

将文件和 JSON 数据发布到 Spring REST 服务

是否有为 Spring 3 REST 控制器生成 JSON SMD 的解决方案?

REST 控制器的 Spring 安全性

Spring的Restful