【问题标题】:How to upload Files in Spring Controller Using @RequestBody?如何使用@RequestBody 在 Spring Controller 中上传文件?
【发布时间】:2019-12-25 10:51:28
【问题描述】:

我正在使用 Angular 进行 Spring Boot。 我正在尝试在一个请求中上传多个文件以及其他属性。

例如我有一个产品,里面有变体产品。都有画廊图片。

我正在提交包含变体的基础产品。

这是提交的控制器端的示例对象。

   public class ProductDTO {
     private String name;
     private String code;
     private String size;
     private List<MultipartFile> multimedias;
     private List<ProductDTO> variants;
   }

控制器代码如下;

@PostMapping
    public ResponseDTO<ProductDTO> createProduct(@RequestBody ProductDTO productDTO, Authentication authentication, HttpServletResponse response) throws Exception {
        return tryCreateItem(() -> {
            productService.createOrUpdateProduct(productDTO, true);
            return productDTO;
        }, response);
    }

在角边提交产品和变体以及图库图片。 但我没有得到控制器中的文件。

谁能帮我解决一下我的情况。

如何将Form内的文件作为RequestBody对象上传?

我正在标记 Angularjs,希望任何人都可能遇到这种情况,或者在角度方面需要任何特定的配置。

【问题讨论】:

  • 是的,@Aboullaite 已经阅读了很多这样的文章。没有我在 Rest 控制器中找到在表单中发送的文件的地方。使用请求参数很好,但这不适合我的要求。我无法获取基于不同对象的文件
  • 问题被标记为 AngularJS 但没有 AngularJS 代码。

标签: spring-boot spring-mvc


【解决方案1】:
@PostMapping
public ResponseDTO<ProductDTO> createProduct(@RequestBody ProductDTO productDTO, @RequestParam("files") MultipartFile[] files, Authentication authentication, HttpServletResponse response) throws Exception {
if(null!=files){
for(int i=0;i<files.length();i++){
 multimedias.add(files[0]);
} 
}
    return tryCreateItem(() -> {
        productService.createOrUpdateProduct(productDTO, true);
        return productDTO;
    }, response);
}
public class ProductDTO {
 private String name;
 private String code;
 private String size;
 @transient 
 private List<MultipartFile> multimedias=new ArrayList<MultipartFile>();
 private List<ProductDTO> variants;

}

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 2015-08-18
    • 2016-01-29
    • 2018-03-16
    • 2011-10-25
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多