在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
有这么一个需求:一个导入按钮,点击按钮导入excel表,如果excel表中部分数据导入失败,则自动下载该部分导入失败数据的excel表,如果全部导入成功,则提示“导入成功”。 首先附上ElementUI的上传文件组件
官网详细介绍 1、引入ElementUI上传组件upload<el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" multiple :auto-upload="false" :file-list="fileList" :on-change="fileChange"> <el-button type="primary">导入</el-button> </el-upload> 页面效果 属性介绍
2、点击导入按钮,选择文件(点击“打开”触发on-change)此时可以通过 fileChange(file,fileList){ console.log(file,'file') console.log(fileList,'fileList') } 3、此时我们已经拿到选择的文件,可以自定义上传方式,将其发送至后端服务器fileChange(file,fileList){ console.log(file,'file') console.log(fileList,'fileList') let url = 'xxx' //后端服务器API let headers = { 'Content-Type':'multipart/form-data' //自定义上传时,该请求头参数必填 } let formData = '' for(let i = 0;i < fileList.length;i++){ //遍历文件数组,fileList有可能存在多个文件 formData = new FormData() formData.append('name',fileList[i].name) formData.append('type','.xlsx') formData.append('file',fileList[i].raw) } this.$axios({ headers: headers, method: 'post', data: formData, url: url, responseType:'blob' //该参数必填,不然下载下来的excel表会提示文件损坏,无法打开 }).then(res=>{ if(res && res.data.size == 0){ //若后台不返回流,说明全部数据导入成功,提示“导入成功”,不自动下载 return } //如果后台返回流,说明部分数据导入失败,则自动下载导入失败数据的excel表 let name = '导入失败数据.xlsx' //自定义下载excel表名 let blob = new Blob([res.data]) let url = window.URL.createObjectURL(blob) let aLink = document.createElement('a') aLink.style.display = 'none' aLink.href = url //download 属性定义了下载链接的地址。href 属性必须在 <a> 标签中指定。 aLink.setAttribute('download',name) document.body.appendChild(aLink) aLink.click() document.body.removeChild(aLink) window.URL.revokeObjectURL(url) //下载结束之后可以执行其他操作,如刷新列表、友好提示等 }) } 方法解析
总结:以上实现了自定义导入excel表,且自动下载接口返回的流,代码可以直接使用,但是请注意返回的数据 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论