JS前端建立html瀏覽器匯出下載
HTML與檔案下載
主要用的html5的download屬性和Blob
URL.createObjectURL
URL.createObjectURL()方法會根據傳入的引數建立一個指向該引數物件的URL. 這個URL的生命僅存在於它被建立的這個文件裡. 新的物件URL指向執行的File物件或者是Blob物件.
objectURL = URL.createObjectURL(blob || file);
File物件或者Blob物件
這裡大概說下File物件和Blob物件:
File物件,就是一個檔案,比如我用input type=”file”標籤來上傳檔案,那麼裡面的每個檔案都是一個File物件.
Blob物件,就是二進位制資料,比如通過new Blob()建立的物件就是Blob物件.又比如,在XMLHttpRequest裡,如果指定responseType為blob,那麼得到的返回值也是一個blob物件.
*注意
每次呼叫createObjectURL的時候,一個新的URL物件就被建立了.即使你已經為同一個檔案建立過一個URL. 如果你不再需要這個物件,要釋放它,需要使用URL.revokeObjectURL()方法. 當頁面被關閉,瀏覽器會自動釋放它,但是為了最佳效能和記憶體使用,當確保不再用得到它的時候,就應該釋放它.
URL.revokeObjectURL
URL.revokeObjectURL()方法會釋放一個通過URL.createObjectURL()建立的物件URL. 當你要已經用過了這個物件URL,然後要讓瀏覽器知道這個URL已經不再需要指向對應的檔案的時候,就需要呼叫這個方法.
具體的意思就是說,一個物件URL,使用這個url是可以訪問到指定的檔案的,但是我可能只需要訪問一次,一旦已經訪問到了,這個物件URL就不再需要了,就被釋放掉,被釋放掉以後,這個物件URL就不再指向指定的檔案了.
比如一張圖片,我建立了一個物件URL,然後通過這個物件URL,我頁面里加載了這張圖.既然已經被載入,並且不需要再次載入這張圖,那我就把這個物件URL釋放,然後這個URL就不再指向這張圖了.
window.URL.revokeObjectURL(objectURL);
下載檔案方法
var funDownload = function (content, filename) {
var eleLink = document.createElement('a');
eleLink.download = filename;
eleLink.style.display = 'none';
// 字元內容轉變成blob地址
var blob = new Blob([content]);
eleLink.href = URL.createObjectURL(blob);
// 觸發點選
document.body.appendChild(eleLink);
eleLink.click();
// 然後移除
document.body.removeChild(eleLink);
};