最近在做一個上傳的功能,上傳之后后台判斷如果文件有問題,則返回標注了錯誤信息的文件,然后自動下載成文件,因此涉及到了arraybuffer
首先,請求時的responseType的值設為arraybuffer,但是注意,這會引起一個問題,返回結構的data中所有內容都會是這種格式,包括json和字符串,因此,如果是其他的報錯信息,也無法按之前的方式打印。
后台的標志位都無法獲取,無法區分是否正確,因此,跟后台協商,添加請求頭參數(或者修改請求頭參數),通過請求頭參數來判斷正確錯誤。
數據處理:
1、文件格式信息
let blob = new Blob([接收到的數據],{type: 'application/文件格式'}) 一定要加[]
然后創建a標簽,設置路徑(window.URL.createObjectURL(blob)),用.download設置文件名稱,然后通過.click()來自動下載
2、文字信息
let blob = new Blob([接收到的數據])
然后使用fileReader對象進行數據轉換和輸出
let reader = new FileReader()
reader.readAsText(blob, 'utf-8')
reader.onload = function() {
console.log(reader.result) //輸出文字
}