java - 想要在 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;
}
}
我正在尝试从其他客户端使用它,请提出正确的方法。
解决方案
像这样做-
在您的控制器中创建一个 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;
}
推荐阅读
- python-3.x - 启动 Django 服务时如何修复此错误?-- 启动的线程中出现未处理的异常
- python-3.x - 如何在python类中对同质属性进行分组
- python - 在 Sql Alchemy 的 add_columns 中格式化列
- javascript - 无法在 chrome v.71 ios 12+ 上打开 blob 文件
- javascript - localeCompare 方法行为不明确
- xamarin - 如何解决在尝试获取令牌时获得 401 Unauthorized 的问题?
- firebase - BigQuery 会向我收取从 Firebase Analytic 导出数据的费用吗
- ssh - Ansible 变得无密码
- payment-gateway - Flutterwave Rave Inline Checkout 集成错误
- java - ArrayList IndexOutOfBoundsException 使用扫描仪