打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何使用elemen-ui实现文件的上传与下载


1、文件上传el-upload

<el-upload
    class="upload-style"
     :action="UploadListUrl()"
     :show-file-list="ifImportSucess"
     :on-success="handleImportSuccess"
     :headers="importHeader"
>
      <el-button class="import-btn">数据导入</el-button>
</el-upload>

action: 需要导入的数据源地址

headers:大多数情况下,前后端接口请求会有加密token处理,这时候就需要修改对应的header请求头

on-success: 上传成功之后的一些处理

2、文件的下载

<el-button class="import-btn" @click="handleDownListModelClick">下载模板</el-button>

直接通过点击事件来触发需要下载的接口地址

需要注意的是,如果对接的后端接口没有进行二进制数据处理,则需要在请求头中添加

responseType = 'blob' // 与headers是平级的

通过点击事件--调用接口请求,返回对应的二进制编码,(有可能接口已经处理过),那直接转换成我们需要的下载URL即可

 // 下载模板
    async handleDownListModelClick () {
      try {
        const res = await this.$store.dispatch('rights/downloadListModel')
        console.log(res)
        // 接口未处理二进制
        // const blob = new Blob([res.data], {
        //   type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        // })

        const downloadElement = document.createElement('a')
        const href = window.URL.createObjectURL(res) // 创建下载的链接
        downloadElement.href = href
        downloadElement.download = `模板.xlsx` // 下载后文件名
        document.body.appendChild(downloadElement)
        downloadElement.click() // 点击下载
        document.body.removeChild(downloadElement) // 下载完成移除元素
        window.URL.revokeObjectURL(href) // 释放掉blob对象
        if (res) {
          this.$message({
            type: 'success',
            message: '下载成功'
          })
        }
      } catch (err) {
        console.warn(err)
      }
    },

注意,如果项目中使用了mock.js需要在vuejs项目中的main.js中注释掉,不然返回的二进制编码会带入mock的数据导致无法正确转码,具体原因。。。还在研究中。

以上就是,基于elemen-ui的文件的上传与下载。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vue-3.0问题 自己收藏
Blob
一文了解文件上传全过程(1.8w字深度解析,进阶必备)
Vue中接收二进制文件流实现pdf预览的方法
blob - 二进制文件流下载
js原生xhr处理文件下载问题_xhr下载文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服