vue+axios+element导入excel

总结:type类型是file的input框上传的文件,都可以用formData对象上传,我的代码很简单,非常简单,very简单,没有网上的复杂,所以分享出来,供大家参考。

1.接口部分

注意点1:必须设置headers的content-type为multipart/form-data,不然后台会报the current request is not multipart request

注意点2:这里有两个参数,第一个是用formData转化的文件,第二个是以对象传过来的需要用的字符串

// 客户-导入客户
export const apiImportCusExcel = (formData, params) => {
	return new Promise((resolve, reject) => {
		instance.post(
			baseApi+'/api/console/customer/customerImport?customerGroupTypeId='+params.customerGroupTypeId+'&importType='+params.importType+'&isSupplementCustomerInfo='+params.isSupplementCustomerInfo+'&seaId='+params.seaId,
			formData,
			{
				headers: {
					'Content-Type': 'multipart/form-data'
				}
			}
		)
		.then(response => {
			resolve(response.data)
		})
		.catch(error => {
			reject(error)
		})
	})
}

2.数据处理部分

注意点1:文件上传改变事件的file.raw就是我们要上传的文件

注意点2:注意点1中的文件用FormData对象append一下,其余的都是常规的接口数据处理操作。

handleImportCusChange(file, fileList){
	let self = this;
	self.importCus.fileTemp = file.raw
},
importCusFile() {
	let self = this;
	let file = self.importCus.fileTemp;
	var fileFormData = new FormData();
	fileFormData.append('file', file);
	let passObj = {
		importType: 1,
		testId: 3
	}
	apiImportCusExcel(fileFormData, passObj).then(response => {
		if(response.code === abbr.okId){
			self.$message({
				showClose: true,
				message: response.msg,
				type: 'success'
			});
			self.closeModel('addCus');
		}else{
			self.$message({
				showClose: true,
				message: response.msg,
				type: 'warning'
			});
		}
	}).catch(error => {
		
	})
},

3.页面部分

注意点1:limit是限制每次可以上传多少个文件,我的变量设置的1

注意点2:这里没有action,因为我是自定义的上传方法,不调用组件的submit方法

注意点3:这里的accept复制的https://segmentfault.com/a/1190000018993619?utm_source=tag-newest#articleHeader2这个分享者所写的,由于该分享者写得太复杂,我没采用,抄了自己以前写得图片上传的代码

<el-upload ref="importCusBtn"
	:on-change="handleImportCusChange"
	:limit="importCus.limitUpload"
	accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
	:auto-upload="false">
	<el-button size="small" type="primary">点击上传</el-button>
	<div slot="tip" class="el-upload__tip">只 能 上 传 xlsx / xls 文 件,只能同时导入一个文件哦!</div>
</el-upload>

<el-button type="primary" @click="handleImportCusClick">导入</el-button>

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值