当前位置:网站首页>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();
}
}
边栏推荐
- 查看端口号占用
- yml字符串读取时转成数字了怎么解决
- 【暑期每日一题】洛谷 P1255 数楼梯
- 【图像隐藏】基于matlab混合DWT-HD-SVD数字图像水印方法技术【含Matlab源码 2007期】
- (Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints
- 【ROS基础】rosbag 的使用方法
- 条件构造器~wapper
- 【论文精读】Geometric Structure Preserving Warp for Natural Image Stitching
- 电商库存系统的防超卖和高并发扣减方案
- MQ带来的一些问题、及解决方案
猜你喜欢
随机推荐
主流定时任务解决方案全横评
File upload vulnerability (2)
PWA 踩坑 - 第一次加载页面后无法获取CacheStorage某些资源
optional
暑假第五周总结
堡垒机、堡垒机的原理
2022夏暑假每日一题(六)
实例026:递归求阶乘
根据一个字段的内容去更新另一个字段的数据,这样的sql语句该怎么样书写
59:第五章:开发admin管理服务:12:MongoDB的使用场景;(非核心数据,数据量比较大的非核心数据,人脸照片等隐私的小文件;)
【心电信号】基于matlab心率检测【含Matlab源码 1993期】
论文《Deep Multifaceted Transformers for Multi-objective Ranking in Large-Scale E-commerce Recommender》
张驰课堂:六西格玛测量系统的误差分析与判定
【故障诊断分析】基于matlab FFT轴承故障诊断【含Matlab源码 2001期】
深度学习网络模型的改进与调整
Specified URL is not reachable,caused by :‘Read timed out
逆变器锁相原理及DSP实现
牛客编程题中——需要处理输入较大数的题目
Vscode连接远程服务器出现‘Acquiring lock on/home/~’问题
【机器学习】实验1布置:基于决策树的英雄联盟游戏胜负预测


![WebGPU 导入[2] - 核心概念与重要机制解读](/img/8f/195a3b04912d8872d025df58ab5960.png)






