問題描述
請求后臺接口時,后端返回是二進制流文件,舉例:如返回是流圖片,這時img標簽是不能直接顯示的需要用在請求頭設置 responseType: "arraybuffer",
以下為請求拿到流數(shù)據(jù)轉(zhuǎn)img方法
let loginImg = 'data:image/png;base64,' + btoa(
? ? ? ? ? ? ? ? ? new Uint8Array(response.data).reduce((data, byte) => data + String.fromCharCode(byte), '')
? ? ? ? ? ? ? ? );
轉(zhuǎn)后可直接使用.
另一種情況:后端返回可能是流文件也可能是json數(shù)據(jù)這是可通過標識判斷把流數(shù)據(jù)轉(zhuǎn)為json對象正常處理 (前提是請求響應設置為了 responseType: "arraybuffer",)
let encodedString = String.fromCharCode.apply(null, new Uint8Array(response.data));
?let decodedString = decodeURIComponent(escape((encodedString)))? //解決中文亂碼 ?重要不可遺漏
? let obj = JSON.parse(decodedString);