赞
踩
文件上传后,又被修改,无法提交到后端
具体步骤:
这个问题不仅仅局限于el-uploader,是一个普遍性的问题
导致的问题
第2步文件修改后,之前上传的文件已经不存在,导致提示错误
解决办法:思路是缓存文件
具体:
结果:
// 辅助方法1:file转为base64 const fileToBase64 = (file) => { return new Promise(resolve => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = e => { return resolve(e.target.result) }; }) } // 辅助方法2:base64转为file const base64ToFile = (base64, filename) => { var arr = base64.split(','); var type = arr[0].match(/:(.*?);/)[1]; var fileExt = type.split('/')[1]; var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], filename, { type: type }) } // httpRequest是指file onchange 这一类的回调事件 httpRequest(data) { this.dataForm.file = data.file // 步骤1. 文件变化时 将上传文件转为base64 缓存起来 fileToBase64(data.file).then(result=>{ this.base64 = result }) }, // 点击提交按钮,发起ajax请求 onSubmit() { if (!this.dataForm.file) { alert('请先上传文件') return } // 步骤2. 提交请求前将缓存的base64文件转为file文件提交 let cacheFile = base64ToFile(this.base64, this.dataForm.file.name); this.dataForm.file = cacheFile axios.post('/order/create', this.dataForm) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。