vue使用post匯出檔案
阿新 • • 發佈:2020-08-10
專案中匯出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); }) }