首页 > 其他分享 >Vue 图片上传formdata()传参形式

Vue 图片上传formdata()传参形式

时间:2023-12-14 16:44:23浏览次数:25  
标签:传参 Vue false log formdata let respData console rep

1. 接口需要设置 headers: { 'Content-Type': 'multipart/form-data' },  from-data流的形式传参

 2. js

html:

// 文件上传
<div class="file"> <el-button type="primary" style="width:170px" icon="el-icon-upload2">重新导入文件</el-button> <input :value="uploadValue" v-if="refush" ref="referenceUpload" class="upload" type="file" v-on:change="importfxx($event)" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /> </div>
// 失败文件下载
  <el-button v-if="isShowErrBtn" type="primary" style="width:170px;margin-top: 15px;" icon="el-icon-download"  @click="downloadExcel()">下载导入失败文档</el-button>  // 模版下载   <a :download="download" :href="'/jpark-center-mgr'+downLoadAddress" class="downA">下载模板</a>      // style .file{     position: relative;     margin: 20px auto 0 auto;     text-align: center; } .file i{   display: block;   font-size:20px;   margin-top: 25px } .file span{   color: #fff;   cursor: pointer; } .file input {   display: block;   line-height: 100px;   width: 100%;   height: 100%;   opacity: 0; //透明,不显示   position: absolute;   left: 0;   top:0;   z-index: 9999;   cursor: pointer;     }
 

js:

// 文件上传
importfxx(event) { console.log("准备上传",this.fileData); this.loading =true this.file = null this.file = event.currentTarget.files[0]; let suffix = this.file.name.split(".")[(this.file.name.split(".").length-1)] console.log("文件信息",suffix) if (suffix != 'xlsx' && suffix != 'xls'){ this.loading =false this.$message({ message: '不支持的文件类型,请下载模板', type: 'warning' }); return false } else { this.isWrong = false; let _this = this; let inputDOM = this.$refs.inputer; // 通过DOM取文件数据 var rABS = false; //是否将文件读取为二进制字符串 var f = this.file; var forData = new FormData() for( let key in this.fileData ) { if(this.fileData.hasOwnProperty(key)){ forData.append(key,this.fileData[key]) } } forData.append("file",f) this.uploadValue = ''; //置空 clearInterval(this.timer); // var customerId= JSON.parse(this.fileData.customerId); let param = new Object() for( let key in this.fileData ) { if(this.fileData.hasOwnProperty(key)){ param[key] = this.fileData[key] } } console.log('param', param) this.request(forData).then(resp =>{ if (resp.respCode == 'success'){ this.totalNum = resp.totalNum; console.log("上传成功"); //记录id //var id=0; this.timer = setInterval(()=>{ // 检测最近有没有上传失败记录 this.downWrongExcel(param).then(rep=>{ if (rep.respData) { if (rep.respData.opStatus==1) { //if(rep.respData.opStatus==1||rep.respData.opStatus==2){ console.log("bbbb"); this.loading =false //id=rep.respData.id; this.step = 2; this.totalNum=rep.respData.totalNum; this.finishedNum=rep.respData.finishedNum; this.percentage=Math.round(rep.respData.finishedNum/rep.respData.totalNum*100) ; console.log("百分比"+this.percentage); console.log("百分比"+this.percentage); console.log("总数"+rep.respData.totalNum); console.log("已完成"+rep.respData.finishedNum); if (rep.respData.totalNum==rep.respData.finishedNum) { console.log("结束"); // clearInterval(this.timer); // this.$message({ // message: '导入成功', // type: 'success' // }) // if (rep.respData.list) {this.$emit('success', rep.respData.list)} // 导入成功回调 this.refush=false this.loading =false // this.dialogVisible = false } } else if(rep.respData.opStatus==2){ console.log("导入成功"); clearInterval(this.timer); // this.$message({ // message: '导入成功', // type: 'success' // }) this.$emit('success',rep.respData.list)// 导入成功回调 this.refush=true this.loading =false this.dialogVisible = false } else if(rep.respData.opStatus==4){ console.log("校验不通过"); this.step = 3; this.loading =false; this.refush = true; this.report = `由于导入内容未按照模板格式进行填写,部分车牌号码导入失败,请下载文档查看导入失败的车牌号码!` clearInterval(this.timer); } } // else{ // console.log("校验不通过"); // clearInterval(interval); // } }); },2000) } else { console.log('文件导入失败') //clearInterval(interval); this.isWrong = true; this.step=3; this.loading =false //this.isReport =true this.refush=false this.report=resp.respMsg if (this.report == `每次导入上限为${this.maxLength}条`) { this.isShowErrBtn = false } else { this.isShowErrBtn = true } this.initBox =false this.$message({ message: resp.respMsg, type: 'warning' }) let that =this setTimeout(function(){ that.refush=true },100) this.$emit('error',{})// 失败回调 } }).catch(function (error) { //clearInterval(interval); _this.refush=false _this.loading =false _this.$message({ message: '文件导入错误', type: 'warning' }) console.log(error,'文件导入错误') }) } },


// 失败文件下载
  downloadExcel(){         let that = this         // var customerId= JSON.parse(this.fileData.customerId);         // let param = { customerId }         let param = new Object()           for( let key in this.fileData ) {             if(this.fileData.hasOwnProperty(key)){                 param[key] = this.fileData[key]               }           }         this.downWrongExcel(param).then(rep=>{           if (rep.status == 200) {             let filterVals = rep.respData.list;             if (this.downErrorExcelHandle != null) {               let obj = this.downErrorExcelHandle(filterVals)               // console.log('父组件执行的值', obj)               this.tHeader = obj.tHeader               this.tHeaderfilterVal = obj.tHeaderfilterVal               this.filterList = obj.filterVals             } else {               this.tHeader = ['车牌号','车牌颜色','处理结果']               this.tHeaderfilterVal = ['carNo','carnoColor','result']               if (filterVals && filterVals.length > 0) {                 filterVals.forEach(el => {                     el.carnoColor = this.formatCarnoColor('', '', el.carnoColor);                 });               }               this.filterList = filterVals             }             that.downLoadWrongExcel(this.tHeader, this.tHeaderfilterVal, this.filterList)           }         });
      },    // 模版下载, 模版文件需要放在本地     downLoadAddress: '/static/excel/merchantCarTemplate.xlsx',
 

 

标签:传参,Vue,false,log,formdata,let,respData,console,rep
From: https://www.cnblogs.com/mmzuo-798/p/17901496.html

相关文章

  • vue2 中 el-table 实现树形列表,支持增删改等操作
    需求场景:el-table构造一个树形列表,支持新增节点,删除,修改等操作。实现效果思路 一般的el-table增删改,我们都很熟悉;关键在于实现一个纯前端的树形列表,最终再调接口存列表数据。     树形el-table,需要设置 row-key,一般为id,所以每新增一条数据,都必须有id。需......
  • 浅谈 JSON 对象和 FormData 相互转换
    前言大家都知道,前端在和后台进行交互联调时,肯定避免不了要传递参数,一般情况下,params在get请求中使用,而post请求下,我们有两种常见的传参方式:JSON对象格式和formData格式,但是一些场景是需要我们对这两种数据格式进行转换的,例如表单提交,有些是JSON对象格式的数据,有些是F......
  • vue路由切换时内容组件的滚动条回到顶部
    vue路由切换时内容组件的滚动条回到顶部:https://blog.csdn.net/Macao7_W/article/details/125517519?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170252373016800185826420%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=......
  • Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
    1、需求使用Vue+ElementUI实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面。2、实现1)列表页index.vue<el-table><!--其他列--><el-table-columnlabel="操作"width="150"><templateslot-scope=......
  • vue中echarts图表---正负轴柱状图
    一、安装npmiecharts--save二、引入//全局引入importechartsfrom'echarts'Vue.prototype.$echarts=echarts//局部【这里使用局部引入】importechartsfrom'echarts';三、代码1<!--容器-->2<divid="cylinderEcharts"ref="cyl......
  • vue项目 npm install 安装依赖 特别慢 解决办法
    vue项目npminstall安装依赖特别慢解决办法使用NPM(Node.js包管理工具)安装依赖时速度特别慢,为了安装Express,执行命令后两个多小时都没安装成功,最后只能取消安装,笔者20M带宽,应该不是我网络的原因,后来在网上找了好久才找到一种最佳解决办法,在安装时可以手动指定从哪个镜像服务器......
  • vue过滤器
    使用场景:加工属性,对属性做一些类似格式化的操作但不会改变该属性;看起来跟computed类似,后面总结两者区别使用地方:可以放在{{}}插值中使用,也可以在v-bind表达式中使用(vue2.1.0+支持)注意事项:过滤器中this不能获取vue实例全局过滤器://main.jsVue.filter('filterFun',function......
  • uniapp开发——纯原生渲染nvue调用uni.makePhoneCall没反应的处理办法
    uni.makePhoneCall(OBJECT)|uni-app官网(dcloud.net.cn)正常情况下,manifest.json配置拨打电话的权限就可以了:配置权限后重新打包,真机运行应该就可以正常的拨打电话了。如果API没反应,那么可以试试下边这种不弹出询问框直接拨打电话的方法:callMobile(){letmobile......
  • avue option 参数
    option:{labelWidth:20,//标签宽度gutter:132,//间距card:true,//是否列表公用tabs:true,//开启选项卡tabsActive:3,//选项卡个数emptyBtn:true,//是否显示清空按钮,默认truesubmitBtn:true,......
  • Vue中 v-model 和 model 的区别
    Vue中v-model和:model的区别1、v-model通常用于表单上双向数据的绑定,如果除了表单其他组件使用时,起不到任何效果。它还可以实现子组件到父组件的双向数据动态绑定。input上的v-model:<inputv-model="price"><!--下行注释的语法糖--><!--<input:value="price"......