Spring MVC 将文件与其他数据一起发送到springboot后端

cfh9epnr  于 2022-12-27  发布在  Spring
关注(0)|答案(1)|浏览(175)

我正在寻找一个解决方案,我可以同时发送一个csv文件和其他数据(Angular )到Sping Boot 后端。在我的情况下,我不能使用FormData,因为我需要发送的数据不仅是字符串(数据是异构的),所以我的DTO在前面看起来像下面的东西:

export class example {
    id: number;
    addresses?:string[];
    status :string;
    createdBy?: string;
    createdDate?: Date;
    collections : int[]
    addressesDocument: File;    // <------- file i need to send to the backend
    
}

在后端,我创建了一个类似的DTO,其中包含MultipartFile作为文件类型,但总是出现异常

@PostMapping("/examples")
public void createExample(@Valid @RequestBody ExampleDTO example) throws URISyntaxException, FileNotFoundException {

    System.out.println(exampleDTO.getfile());
          exampleService.create(example);

}

在同一API中发送文件沿着其他潜水员数据的最佳解决方案是什么???

olmpazwi

olmpazwi1#

你不能把文件作为json-object的一部分发送,正如你的sample-code所指出的,尽管可以使用内容类型multipart/form-data,然后分别把文件和其余数据附加到FormData中。
Angular-frontend中的Post-request将如下所示:

saveFileAndData(file: File, exampleDataObject: Example) {
    const formData = new FormData();
    formData.append('file', file);
    formData.append('data', JSON.stringify(exampleDataObject));

    const headers = new HttpHeaders();
    headers.set('Content-Type', 'multipart/form-data');

    this.http.post('/examples', formData, { headers: headers })
        .subscribe();
}

相关问题