博客地址:https://ainyi.com/65 解釋 | 背景 看到標題有點懵逼,哈哈,實際上是后端將文件處理成二進制流,返回到前端,前端處理這個二進制字符串,輸出文件或下載 最近公司有個需求是用戶在點擊下載文件(pdf)的時候,下載地址不能暴露在接口的返回值,前端不要通過這個地址下載 ...
比如前后端約定,下載成功返回二進制流,下載失敗返回對象 code: , msg: 失敗原因 問題:當下載文件時,axios配置responseType: blob ,此時后台返回的數據會被強制轉為blob類型 如果后台返回失敗對象,前端也無法得知,如果按正常處理會得到名為undefined的文件。 解決:在try代碼塊里面嘗試將axios已經轉成blob格式的res轉回json格式,如果不報錯說明 ...
2021-12-10 16:39 0 160 推薦指數:
博客地址:https://ainyi.com/65 解釋 | 背景 看到標題有點懵逼,哈哈,實際上是后端將文件處理成二進制流,返回到前端,前端處理這個二進制字符串,輸出文件或下載 最近公司有個需求是用戶在點擊下載文件(pdf)的時候,下載地址不能暴露在接口的返回值,前端不要通過這個地址下載 ...
思路: 1、通過 const blog = new Blob([data.data], { type: 'image/jpeg' }) 獲取blob對象 2、通過 const url = window.URL.createObjectURL(blog) 獲取blob地址 ...
處理邏輯:獲取返回文件流,通過 Blob 對象構造文件后下載。 function download(data, filename, type="application/vnd.ms-excel") { let file = new Blob([data], { type ...
1、首先看沒處理時接口返回的數據,會發現是亂碼的。。。 2、解決亂碼需要在請求接口時,加上配置responseType: 'blob',例如在vue中使用axios的http請求 加上之后返回的數據就是這樣的 3、接下來就是處理數據文件並下載 ...
https://blog.csdn.net/codezha/article/details/103372485?utm_medium=distribute.pc_relevant.none-task- ...
ArrayBuffer又稱類型化數組。 數組里面可以放數字、字符串、布爾值以及對象和數組等,ArrayBuffer放0和1組成的二進制數據 數組放在堆中,ArrayBuffer則把數據放在棧中(所以取數據時后者快) ArrayBuffer初始化后固定大小,數組則可以自由增減 ...
用axios正常發送請求下載excel會出現以下問題,即將二級制流文件下載到了本地,下附解決辦法: 一、實現思路: 這類方法思路如下: 1. 使用js在頁面常見a標簽 2. 創建Blob對象, 在Blob中傳入后端返回的response.data 這一步中Blob需要的是一個 ...
補充方法: ...