在做excel導出的時候,發現需要自行用axios封裝一個請求函數,其中主要的修改就是將axios中的配置項responseType進行修改,后端返回的是數據流,所以就使用Blob。需要注意的是如果返回的二進制buffer流,需要修改為arraybuffer。如果發現導出的文件格式錯誤,打不開,多半是responseType的錯誤,通過對axios源碼的分析,發現了XMLHttpRequest
XMLHttpRequest
XMLHttpRequest 自身就支持responseType
<1>" "
responseType 為空字符串時,采用默認類型 DOMString,與設置為 text 相同。
<2>arraybuffer
response 是一個包含二進制數據的 JavaScript ArrayBuffer。
<3>blob
response 是一個包含二進制數據的 Blob 對象 。
<4>document
response 是一個 HTML Document 或 XML XMLDocument,這取決於接收到的數據的 MIME 類型。請參閱 XMLHttpRequest 中的 HTML 以了解使用 XHR 獲取 HTML 內容的更多信息。
<5>json
response 是一個 JavaScript 對象。這個對象是通過將接收到的數據類型視為 JSON 解析得到的。
<6>text
response 是一個以 DOMString 對象表示的文本。
<7>ms-stream
response 是下載流的一部分;此響應類型僅允許下載請求,並且僅受 Internet Explorer 支持。
var ajaxObj = new XMLHttpRequest(); ajaxObj.responseType = "arraybuffer"; ajaxObj.open("get", "http://10.210.2.133:9192/example/api/simple/object"); ajaxObj.send(); ajaxObj.onreadystatechange = function () { if (ajaxObj.readyState == 4 && ajaxObj.status == 200) { console.log(ajaxObj.responseText); } };