前端通过axios和FormData实现文件上传功能遇到的坑
2024-10-07 12:05:21
使用element-ui中的upload上传组件,前端上传数据参数已经传过去了,但是后端 (java) 接不到数据 (null)
【解决方案】
html部分:
<el-button type="primary" v-show="type!=2" @click="updateActivity(1)">保存</el-button> <div class="uploadBox tx-lf">
<div class="fileBox">
模板导入
<input type="file" name="commodityFile" id="commodityFile" class="fileBtn" @change="uploadChange" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
</div>
<div class="el-upload__tip">只能上传xlsx文件,且不超过10M</div>
<div class="filename">{{fileName}}</div>
</div>
css部分:
.fileBox{
width: 48px;
height: 14px;
padding: 9px 15px;
font-size: 12px;
position: relative;
overflow: hidden;
color: #fff;
background-color: #409EFF;
border-color: #409EFF;
border-radius: 3px;
.fileBtn{
position: absolute;
top:;
left:;
width: 100%;
height: 100%;
outline: none;
background: transparent;
filter: alpha(opacity=0);
-moz-opacity:;
-khtml-opacity:;
opacity:;
}
}
js部分:
updateActivity(status){
//判断文件大小 文件不能超过10MB
let file = document.getElementById("commodityFile").files[0]?document.getElementById("commodityFile").files[0]:'';
if(file){
const isLt10M = file.size / 1024 / 1024 < 10;
if (!isLt10M) {
this.$message.error('上传文件大小不能超过 10MB!');
return false;
}
}
let styleNos = [];
if(this.tableData.length > 0){
this.tableData.forEach(item => {
styleNos.push(item.styleNo);
})
}
var form = new FormData();
form.append('activityName',this.formInline.activityName);
form.append('status',status);
form.append('startTime',this.formInline.startTime);
form.append('endTime',this.formInline.endTime);
form.append('tagId',this.formInline.tagId);
form.append('id',this.formInline.id);
form.append('styleNos',styleNos);
form.append("commodityFile", file);
this.axios.defaults.headers.post['Content-Type']='multipart/form-data;charse=UTF-8';
this.axios({
method: 'post',
data: form,
transformRequest: [function(){
return form;
}],
url: '/activity/updateActivity',
})
.then(res => {
res = res.data;
if(res.state == 'success'){
this.$message.success(res.data);
}else{
this.$message.error(res.data);
}
});
},
参考文章:https://blog.csdn.net/weixin_34413802/article/details/88722992
最新文章
- 为什么不用rxjava?
- Flash调用麦克风
- PE文件格式 持续更新ing
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十三 )TCPConnection
- 使用Retrofit和Okhttp实现网络缓存。无网读缓存,有网根据过期时间重新请求 (转)
- ref关键字的作用
- BZOJ2073: [POI2004]PRZ
- java web分享ppt大纲 -- servlet容器简介
- 一致性算法--Paxos
- 解决删除Volume报错的问题
- HDU 1828 Picture(长方形的周长和)
- 黑马程序员:Java基础总结----网络编程
- Python collections模块总结
- 实现Github和Coding仓库等Git服务托管更新
- 关于ComponentOne For WinForm 的全新控件 – DataFilter数据切片器(Beta)
- windows系统下,express构建的node项目中,如何用debug控制调试日志
- 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂
- node+ts的心得与坑
- 【APT】SqlServer游标使用
- 【转】ubuntu 12.04下如何开启 NFS 服务 &; 设置
热门文章
- Week 10 - 474. Ones and Zeroes
- 修改JAVA_HOME失效
- A heavy dew refreshed the earth at night
- git比较重要但是又容易忘记的操作
- ES6 new Set实现数组去重
- Codeforces 601B(贪心+斜率+组合数学+单调栈)
- Codeforces 1159F Winding polygonal line(叉积)
- CentOS 5.5编译安装lnmp
- Rest_Framework的视图与路由
- HDUSTOJ-1558 Flooring Tiles(反素数)