使用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

前端通过axios和FormData实现文件上传功能遇到的坑的更多相关文章

  1. 使用Typescript重构axios(二十五)——文件上传下载进度监控

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  2. Vue实现多文件上传功能(前端 + 后端代码)

    本人业余前端开发,因为公司(很坑)觉得我很牛逼,所以让我前后端一起玩,无奈的我只能磕磕碰碰的研究起了vue. 开发项目的时候,用到文件上传的功能很常见,包括单文件上传和多文件上传,上传各种类型的文件. ...

  3. Multipart/form-data POST文件上传详解

    Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...

  4. Multipart/form-data POST文件上传详解(转)

    Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...

  5. 构建multipart/form-data实现文件上传

    构建multipart/form-data实现文件上传 通常文件上传都是通过form表单中的file控件,并将form中的content-type设置为multipart/form-data.现在我们 ...

  6. 前端使用 js 如何实现大文件上传

    前端使用 js 如何实现大文件上传 大文件上传 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  7. 文件/大文件上传功能实现(JS+PHP)全过程

    文件/大文件上传功能实现(JS+PHP) 参考博文:掘金-橙红年代 前端大文件上传 路漫漫 其修远 PHP + JS 实现大文件分割上传 本文是学习文件上传后的学习总结文章,从无到有实现文件上传功能, ...

  8. 达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面

    于<采用WinHttp实现HTTP协议Get.Post和文件上传功能>一文中,我已经比較具体地解说了怎样使用WinHttp接口实现各种协议. 在近期的代码梳理中,我认为Post和文件上传模 ...

  9. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. 红米note2 刷机 注意问题:

    其他的百度都有,用刷线宝刷 红米note2 刷机   注意问题: 关机状态线下,链接电脑,按着音量下键不松手,按电源键开机后松开,即进入刷机模式. 其中,红米,红米1s移动,红米note移动3g/联通 ...

  2. lua 转换16进制字符串为10进制数值

    lua 转换16进制字符串为10进制数值 > print(tonumber()) 利用tonumber函数,“16”表示“03FFACB”为16进制数.

  3. IDEA基本设置和快捷键大全

    # IDEA基本设置 ## 设置编码格式 1. Configure - Settings - Editor - File Encodings 2. 将三个编码全部设置为UTF-8 ## 启用Ctrl+ ...

  4. 【SD系列】SAP SD模块-公司间销售简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD模块-公司间销售简介   ...

  5. python基础-11 socket,IO多路复用,select伪造多线程,select读写分离。socketserver源码分析

    Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  6. Ant-编译构建(2)-第3方jar包引入、log4j2

    1.项目目录结构图,lib包引入了一些关于common logging+log4j2相关的jar. 2.编写相关的build.xml <?xml version="1.0" ...

  7. 一份完整的 MySQL 开发规范,进大厂必看!

    作者:听风 https://www.cnblogs.com/huchong/p/10219318.html 一.数据库命令规范 1.所有数据库对象名称必须使用小写字母并用下划线分割 2.所有数据库对象 ...

  8. Oracle数据库控制台常用命令

    安装好数据库以后可以通过“Win+R”打开控制台,在控制台登录Oracle输入命令来操作数据库. SQLPlus命令: SQLPlus命令是用来登录Oracle数据库的命令,有两种写法,分别如下: ( ...

  9. Flutter 初探 -

    flutter 安装 经过许久的关注,及最近google算是真正地推行flutter时,加上掘金小册也有相应的教程,我知道自己得跟着这一波潮流学习了,不然迟早会面临着小程序的危(大家都会了就你不会), ...

  10. ES6——generator-yield

    yield 既可传参,又可以返回 第一个next()传参无效,只用来启动 如果函数前漏掉 * 就是普通函数 如果有yield会报错, ReferenceError: yield is not defi ...