【问题标题】:MultipartUpload of multiple files with additional infoMultipartUpload 多个文件的附加信息
【发布时间】:2021-12-04 20:13:21
【问题描述】:

是否可以将带有附加信息的 MultiPartUpload 映射到 POJO 对象?

上传带有附加信息的文件我可以使用这个@RestController:

@PostMapping(value = "{id}/frontPage")
public void uploadContentBody(@PathVariable long id, @RequestParam("file") MultipartFile file[], @RequestBody List<Info> orderRequests) {
   //...
}

这样,我将文件和信息分开。但是有没有办法将它映射到对象?例如

public class FileInfo(){
   private MultipartUpload file;
   private String info;
   ...
}

  @PostMapping(value = "{id}/frontPage")
    public void createContentPage(@Valid @RequestBody List<FileInfo> request) {
        //...
    }

在这种情况下,请求会是什么样子?看来我还没有找到如何将文件和其他数据放在一起的方法,所以它们可以像那样映射。

感谢您的帮助!

【问题讨论】:

  • 它是否回答了您的问题:stackoverflow.com/a/29370435/1439560 ?
  • 它似乎没有,我希望多部分文件及其附加信息一起在一个对象中,因为当上传具有多个信息的多个文件时,我不必事后创建一些映射

标签: java spring spring-boot rest


【解决方案1】:

您可以将文件和其他数据与@ModelAttribute 注释放在一起。请参考以下代码示例。

@PostMapping(value = "{id}/frontPage")
public ResponseEntity<?> uploadFile(@PathVariable long id, @ModelAttribute FileUploadDto dto) {
    return new ResponseEntity<>(id+"-"+dto.getFile().getName()+"---"+dto.getId(), HttpStatus.OK);
}

我还创建了一个名为 FileUploadDto 的 POJO。

public class FileUploadDto {
private int id;
private MultipartFile file;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public MultipartFile getFile() {
    return file;
}

public void setFile(MultipartFile file) {
    this.file = file;
}}

当发送数据时,它应该作为表单数据发送。在邮递员中它看起来像这样。

请参考下面的卷曲。

curl --location --request POST 'http://localhost:8081/upload/2121/frontPage'--form 'id="121"' --form 'file=@"AwesomeDocument2.pdf"'

【讨论】:

  • 但是,如果我想一次上传多个文件怎么办?
  • 您也可以一次上传多个文件。使用private List&lt;MultipartFile&gt; files;而不是MultipartFile file;在Controller中,你可以访问多个文件,通过dto.getFiles().get(index)
  • 每个上传的文件都需要有自己的附加数据,这样我就有多个文件和一个附加数据
  • 类似地,您可以添加一个包含所需数据的列表作为索引与文件索引相关的列表。它会解决你的问题。
猜你喜欢
  • 2019-10-14
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多