乾貨:blob匯出檔案亂碼解決方案
這個bug太太太太,磨人了 ,從昨天下午找到今天下午!!!吐血了
直入正題:
後臺返回是這樣的:看圖 ↓
我的匯出程式碼是這樣的:
export function exportExcel(url, params = {}) {
return new Promise((resolve, reject) => {
axios({
method: "get",
url: url, // 請求地址
params,
responseType: "blob" // 表明返回伺服器返回的資料型別
}).then(
(response) => {
resolve(response);
console.log(response)
let blob = new Blob([response], {
type: "application/vnd.ms-excel"
});
console.log(blob);
let fileName = "匯出單據" + Date.parse(new Date()) + ".xls";
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
let link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
// 釋放記憶體
window.URL.revokeObjectURL(link.href);
}
},
(err) => {
reject(err);
}
);
});
}
確認過眼神,這是沒有問題的! 但是匯出下載後開啟是這樣的:↓
然後我找啊找,找了很久,網上方法都嘗試了。最後看到網上有盆友說可能是使用了mock模擬的原因,我就把mock的使用關掉了(沒有設定開關的盆友就可以在引入的位置註釋)。
就成功匯出了。。。。。踩坑太累了。。。。
額,更新一下,看了下我的程式碼,發現一點問題:
當responseType設定為‘blob’的時候,後臺返回就是blob物件了,前端 不用 再去new Blob 了,下面就是列印的返回結果:
所以拿到結果就可以直接用了,從新修改程式碼:
export function exportExcel(url, params = {}) {
return new Promise((resolve, reject) => {
axios({
method: "get",
url: url, // 請求地址
params,
responseType: "blob" // 表明返回伺服器返回的資料型別
}).then(
(response) => {
resolve(response);
console.log(response)
// 前面responseType設定的 “blob” 後臺返回的response直接就是 blob物件,前端不用再去new Blob了
// let blob = new Blob([response], {
// type: "application/vnd.ms-excel"
// });
// console.log(blob);
let fileName = "匯出單據" + Date.parse(new Date()) + ".xls";
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(response, fileName);
} else {
let link = document.createElement("a");
link.href = window.URL.createObjectURL(response);
link.download = fileName;
link.click();
// 釋放記憶體
window.URL.revokeObjectURL(link.href);
}
},
(err) => {
reject(err);
}
);
});
}
相關文章
- c#匯出檔案,檔名中文亂碼解決方法C#
- 解決PHP匯出CSV檔案中文亂碼問題PHP
- DataGrid匯出Excel產生亂碼解決方案(轉)Excel
- MySQL直接匯出CSV檔案,並解決中文亂碼的問題MySql
- 匯入sql檔案出現亂碼SQL
- 引入外部js檔案導致亂碼解決方案JS
- Java 讀檔案寫檔案 韓文 中文 亂碼問題解決方案Java
- 【Salesforce問題解決】Dataloader匯出的檔案亂碼或者問號的解決辦法Salesforce
- sqlldr 匯入中文出現亂碼解決方法SQL
- 引入外部js檔案導致亂碼問題解決方案JS
- ORACLE亂碼解決方案Oracle
- Java亂碼解決方案Java
- 行業乾貨-如何逆向解決QT程式漢化亂碼問題行業QT
- oracle 輸出中文亂碼問題解決方案Oracle
- mysql匯入匯出資料中文亂碼解決方法小結MySql
- Excel開啟CSV檔案出現亂碼怎麼辦?Excel開啟csv檔案出現亂碼的解決方法Excel
- 解決Java POI 匯出Excel時檔名中文亂碼,相容瀏覽器JavaExcel瀏覽器
- web專案顯示亂碼解決方案整理Web
- Excel開啟csv檔案出現亂碼的解決辦法Excel
- 小程式批次匯入excel資料,雲開發資料庫匯出cvs亂碼解決方案Excel資料庫
- vue專案前端匯出word檔案(bug解決)Vue前端
- 解決Mysql匯入亂碼問題MySql
- 解決kettle配置檔案中的中文亂碼
- Oracke大欄位Blob匯出到檔案
- Python:Python中文寫入csv檔案出現亂碼問題的解決方案之一Python
- PL/SQL亂碼解決方案(日文)SQL
- office for Mac Excel匯入csv檔案亂碼MacExcel
- 表單傳值出現亂碼問題解決方案
- 管理工具匯入CSV檔案,中文資料亂碼的解決辦法。
- Oracle Sql Loader中文字元匯入亂碼的解決方案OracleSQL字元
- oracle中匯入dmp字元亂碼分析和解決方案Oracle字元
- 解決excel開啟.csv檔案亂碼問題Excel
- Zuul上傳檔案,中文檔名亂碼解決辦法Zuul
- ajax讀取txt文字內容出現亂碼解決方案
- Oracle 生僻字亂碼解決方案Oracle
- mysql 插入中文亂碼解決方案 轉MySql
- Discuz門戶模板亂碼解決方案
- 乾貨:基於scss的主題配色解決方案CSS