Spring Boot多文件和表单数据接收(uniapp多文件和表单上传)
背景
一名可爱的后端在开开心心的写着接口
public String api(@RequestPart("files") MultipartFile[] files, @RequestPart("form") From form)
postman测试完美!
然后遇到了uniapp的多文件加表单数据上传
uni.uploadFile({
url: 'https://www.example.com/upload',
files: tempFiles,
formData: {
'user': 'test',
'name': 18
},
success: (uploadFileRes) => {
console.log(uploadFileRes.data);
}
});
为什么请求会报错?
为什么读取到的文件永远只有一个?
。。。。。。
问题
- 上传多文件时如何读取
- 如何读取表单数据
解决
前端上传时将表单数据转化为字符串
//表单数据
let form = {
"user" : "test",
"age" : 18
}
//上传
uni.uploadFile({
url: 'https://www.example.com/upload',
files: tempFiles, //tempFiles需要自己构造一下,具体要求看uniapp官方文档
formData: {
'from':JSON.stringify(form) //将表单数据转化为字符串
},
success: (uploadFileRes) => {
console.log(uploadFileRes.data);
}
});
后端用MultipartRequest接收文件,用String接收表单数据
引入JSON工具,这里使用fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
接口如下
public String api(MultipartRequest files, @RequestPart("form") String form) {
//表单数据反序列化
Form form = JSON.parseObject(form, Form.class);
//获取文件
files.getMultiFileMap().forEach((key, multipartFiles) -> {
MultipartFile multipartFile = multipartFiles.get(0)
//对文件的具体操作
});
}