首页 > 解决方案 > 想要在 spring rest API 中发送文件以及其他一些值

问题描述

我有一个要求,我需要为消费多个文件和其他一些字段提供休息服务,如何为这种类型的要求创建一个服务控制器,只有附件,有很多答案,但文件+其他数据我没有找到合适的答案,我的 pojo 课看起来像

import org.springframework.web.multipart.MultipartFile;

public class FileUploadDTO {

    private String name;
    private String location;
    private List<MultipartFile> file;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public List<MultipartFile> getFile() {
        return file;
    }
    public void setFile(List<MultipartFile> file) {
        this.file = file;
    }

}

我正在尝试从其他客户端使用它,请提出正确的方法。

标签: javaspringrest

解决方案


像这样做-

在您的控制器中创建一个 POST 方法处理程序

@PostMapping(value = "/test/upload")
public @ResponseBody String uploadFileTest(@RequestParam("file") MultipartFile file, @RequestParam("stringValue") String stringValue, @RequestParam(value = "booleanValue", required = false) String booleanValue) {
    //your logic
}

从您的客户端,使用所需的参数进行表单 POST 调用。JSON 输入@RequestBody将不起作用,因为 json 数据类型不支持文件。

您也可以尝试使用 POJO,但要使其正常工作,@RequestBody请跳过输入控制器输入。

编辑:使用 POJO 测试的工作示例

控制器:

@PostMapping(value = "/test/upload")
public @ResponseBody String uploadFileTest(Dummy dummy) {
    return dummy.getFiles().get(0).getOriginalFilename();
}

和 POJO:

public class Dummy {

private List<MultipartFile> files; 
private String stringValue;
private String booleanValue;

public List<MultipartFile> getFiles() {
    return files;
}
public void setFiles(List<MultipartFile> files) {
    this.files = files;
}
public String getStringValue() {
    return stringValue;
}
public void setStringValue(String stringValue) {
    this.stringValue = stringValue;
}
public String getBooleanValue() {
    return booleanValue;
}
public void setBooleanValue(String booleanValue) {
    this.booleanValue = booleanValue;
}

推荐阅读