当前位置:网站首页>FormData上传二进制文件、对象、对象数组
FormData上传二进制文件、对象、对象数组
2022-08-02 06:54:00 【洋哥登陆】
FormData上传 MultipartFile文件; 通过表单上传MultipartFile文件与对象;FormData上传对象列表
一、FormData上传 MultipartFile文件
使用element的 el-upload组件上传文件。前端使用FormData 传输二进制文件
<template>
<div id="app">
<!-- formData的主要用处
1. 网络请求中处理表单数据
2. 网络请求中处理用来异步的上传文件 -->
<div class="upload">
<el-upload
class="upload-demo"
drag
action="#"
:multiple="false"
:auto-upload="false"
:on-change="onChange"
:on-remove="onRemove"
:file-list="fileList"
>
<i class="el-icon-upload" />
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<el-button size="medium" @click="upload">上传</el-button>
</div>
</div>
</template>
<script>
import UploadApi from '@/api/upload.js'
export default {
name: 'FormData',
data() {
return {
fileList: []
}
},
methods: {
onChange(file, fileList) {
this.fileList = []
this.fileList.push(file.raw)
},
onRemove() {
this.fileList = []
},
upload() {
const formData = new FormData()
formData.append('file', this.fileList[0])
// 请求服务端接口
UploadApi.formData(formData).then(res => {
this.$message.success(res)
}).catch(err => {
this.$message.error(err)
})
}
}
}
</script>
后端服务器接收
@PostMapping("/formData")
public void useFormData(@RequestParam("file") MultipartFile file){
System.out.println(file.getName());
System.out.println(file.getBytes());
System.out.println(file.getInputStream());
}
二、 上传 MultipartFile文件和 数据
前端仍然通过append方法添加数据
upload() {
const formData = new FormData()
formData.append('file', this.fileList[0])
formData.append('time', 20220730)
// 请求服务端接口
UploadApi.formData(formData).then(res => {
this.$message.success(res)
}).catch(err => {
this.$message.error(err)
})
}
后端添加@RequestBody 及实体类对象接收
@Data
public class Upload {
private long time;
}
@PostMapping("/formData")
public boolean useFormData(@RequestBody @RequestParam("file") MultipartFile file, Upload upload){
System.out.println(file.getName());
System.out.println(file.getBytes());
System.out.println(file.getInputStream());
System.out.println(upload.getTime());
}
三、上传表单数据中包含对象
前端append 方法添加数据
upload() {
const formData = new FormData()
formData.append('file', this.fileList[0])
formData.append('time', 20220730)
formData.append('bean.year', 2022)
formData.append('bean.month', 7)
formData.append('bean.day', 30)
// 请求服务端接口
UploadApi.formData(formData).then(res => {
this.$message.success(res)
}).catch(err => {
this.$message.error(err)
})
}
后端服务器添加接收对象
@Data
public class Upload {
private long time;
private DayBean bean;
}
@Data
public class DayBean {
private int year;
private int month;
private int day;
}
@PostMapping("/formData")
public boolean useFormData(@RequestBody @RequestParam("file") MultipartFile file, Upload upload){
System.out.println(file.getName());
System.out.println(file.getBytes());
System.out.println(file.getInputStream());
System.out.println(upload.getTime());
DayBean bean = upload.getBean();
System.out.println("year:" + bean.getYear() + ", month:" + bean.getMonth() + ", day:" + bean.getDay());
}
四、上传对象列表
前端需要循环添加数据
upload() {
const formData = new FormData()
formData.append('file', this.fileList[0])
formData.append('time', 20220730)
for (var i = 0; i < 3; i++) {
formData.append('bean[' + i + '].year', 2022 + i)
formData.append('bean[' + i + '].month', 7 + i)
formData.append('bean[' + i + '].day', 30 + i)
}
// 请求服务端接口
UploadApi.formData(formData).then(res => {
this.$message.success(res)
}).catch(err => {
this.$message.error(err)
})
}
后端服务器使用对象列表接收
@Data
public class Upload {
private long time;
private List<DayBean> bean;
}
@PostMapping("/formData")
public void useFormData(@RequestBody @RequestParam("file") MultipartFile file, Upload upload){
System.out.println(file.getName());
System.out.println(file.getBytes());
System.out.println(file.getInputStream());
System.out.println(upload.getTime());
List<DayBean> beanList = upload.getBean();
for (DayBean bean : beanList) {
System.out.println("year:" + bean.getYear() + ", month:" + bean.getMonth() + ", day:" + bean.getDay());
}
}

其他
1 设置multipart上传大小
@Configuration
public class MultipartThemeConfig {
@Bean
public MultipartConfigElement multipartConfig(){
MultipartConfigFactory factory = new MultipartConfigFactory();
//单个文件大小200MB,单位KB,MB
factory.setMaxFileSize(DataSize.parse("5MB"));
//单个文件大小200MB,单位KB,MB
factory.setMaxRequestSize(DataSize.parse("10MB"));
return factory.createMultipartConfig();
}
}
边栏推荐
- 【暑期每日一题】洛谷 P3156 【深基15.例1】询问学号
- System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security
- C#重点问题之Struct和Class的异同
- 【ROS基础】map、odom、base_link、laser 的理解 及其 tf 树的理解
- SQL server 2014 怎么一次性导出多个查询结果?
- LeetCode 283. 移动零(简单、数组)
- HCIP day one
- Connection reset by peer problem analysis
- 查看端口号占用
- 【机器学习】实验5布置:AAAI会议论文聚类分析
猜你喜欢

“蔚来杯“2022牛客暑期多校训练营5,签到题KBGHFCD

Wuhan 2022 organizing of the high-performance computing added new ecological development of high-performance computing

MQ带来的一些问题、及解决方案
![[Dataset][VOC] Male and female dataset voc format 6188 sheets](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)
[Dataset][VOC] Male and female dataset voc format 6188 sheets

“蔚来杯“2022牛客暑期多校训练营4,签到题NDKHL

正则表达式的理解学习

实例028:递归求等差数列

速看!PMP新考纲、PMBOK第七版解读

堡垒机、堡垒机的原理

你认同这个观点吗?大多数企业的数字化都只是为了缓解焦虑
随机推荐
Analysis of GCC compiler technology
Clapper that can interact with the audience in real time
Day 4 of HCIP
海缆探测仪TSS350(二)
实例030:回文数
jvm 二之 栈帧内部结构
【机器学习】实验6布置:基于集成学习的Amazon用户评论质量预测
数据库概论-MySQL的数据表的基本操作
【机器学习】实验2布置:基于回归分析的大学综合得分预测
暑假第五周总结
[Dataset][VOC] Eyewear dataset 6000 in VOC format
2022.07.31(LC_6132_使数组中所有元素都等于零)
【故障诊断分析】基于matlab FFT轴承故障诊断【含Matlab源码 2001期】
堡垒机、堡垒机的原理
【机器学习】实验3布置:贝叶斯垃圾邮件识别
Submit code process
LeetCode Algorithm 1374. 生成每种字符都是奇数个的字符串
返回文件名问题
awk语法-01-基础语法(命令、选项、内部变量)
修改apt-get源为国内镜像源