在vue框架中,與傳統的根據路徑下載文件(document.getElementById("").src=‘’)方式不一樣,有時候,咱們會須要將上傳的文件在後臺直接進行處理再回傳到前端,這種狀況下文件沒有實際的可獲取的路徑,沒法經過連接方式下載。可是能夠經過將其轉成blob對象,添加到iframe標籤中來模擬下載(或者pdf預覽)。具體的接收方式以下前端
1.首先設置responseType對象格式爲 blob:vue
responseType:'blob'瀏覽器
2.獲取請求返回的response對象中的blobapp
var blob=response.body框架
3.建立一個臨時的url指向blob對象url
#URL.createObjectURL()方法會根據傳入的參數建立一個指向該參數對象的URL. 這個URL的生命僅存在於它被建立的這個文檔裏. 新的對象URL指向執行的File對象或者是Blob對象.spa
var url = window.URL.createObjectURL(blob);
#設置文件類型,這裏以excel爲例
blob.type = "application/excel";
#建立url以後能夠模擬對此文件對象的一系列操做,例如:預覽、下載
var a = document.createElement('a');
a.href = url;
a.download = 'test.xlsx';
a.click();
4.釋放這個臨時的對象urlexcel
window.URL.revokeObjectURL(url);code
#URL.revokeObjectURL()方法會釋放一個經過URL.createObjectURL()建立的對象URL. 當你要已經用過了這個對象URL,而後要讓瀏覽器知道這個URL已經再也不須要指向對應的文件的時候,就須要調用這個方法.對象