如何使用elemen-ui實現文件的上傳與下載


如何使用vuejs和element-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的文件的上傳與下載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM