1. 程式人生 > 實用技巧 >vue使用post匯出檔案

vue使用post匯出檔案

專案中匯出excel檔案很常見,分為get和post方式,get相對簡單些,在url後面拼接需要的引數

post方式請求返回的是表格流檔案,需要使用blob物件指定要讀取的資料,在此記錄下

<div class="same-head">
        <el-button type="success" size="mini" @click="hadnleAdd">登記系統資訊</el-button>
        <el-button type="primary" size="mini" @click="hadnleImport">匯入</el-button>
        <el-button type="primary" size="mini" @click="hadnleExport">匯出</el-button>
        <el-button type="primary" size="mini" @click="hadnleDownload">下載模板</el-button>
</div>
exportFile() {
            let that = this;
            this.$http({
                method: 'post',
                url: this.$api.projectInfo.exportExcel,
                data: JSON.stringify(this.exportData),
                responseType: 'blob',//伺服器返回的資料型別
            }).then((res) => {
                console.log(res, 
'響應狀態'); let blob = new Blob([res], {type:"application/force-download"}) // Blob 物件表示一個不可變、原始資料的類檔案物件 console.log(blob); let fileReader = new FileReader() // FileReader 物件允許Web應用程式非同步讀取儲存在使用者計算機上的檔案的內容 fileReader.readAsDataURL(blob)
//開始讀取指定的Blob中的內容。一旦完成,result屬性中將包含一個data: URL格式的Base64字串以表示所讀取檔案的內容 fileReader.onload = (e) => { let a = document.createElement('a') a.download = `專案應用資訊臺賬.xlsx` a.href = e.target.result document.body.appendChild(a) a.click() document.body.removeChild(a) } }).catch(err => { console.log(err); }) }