摘要:一對(duì)象對(duì)象表示一個(gè)不可變?cè)紨?shù)據(jù)的類文件對(duì)象。示例二對(duì)象通過創(chuàng)建對(duì)象指定文件的下載鏈接。構(gòu)造函數(shù)創(chuàng)建新的表示指定的對(duì)象或者對(duì)象。屬性指定下載鏈接屬性指定文件名屬性規(guī)定被下載的超鏈接目標(biāo)。
一、Blob對(duì)象
Blob對(duì)象表示一個(gè)不可變、原始數(shù)據(jù)的類文件對(duì)象。Blob 表示的不一定是JavaScript原生格式的數(shù)據(jù)。File接口基于Blob,繼承了blob的功能并將其擴(kuò)展使其支持用戶系統(tǒng)上的文件。
構(gòu)造函數(shù)var aBlob = new Blob( array, options );
array 是一個(gè)由ArrayBuffer(二進(jìn)制數(shù)據(jù)緩沖區(qū))、ArrayBufferView(二進(jìn)制數(shù)據(jù)緩沖區(qū)的array-like視圖)、Blob、DOMString等對(duì)象構(gòu)成的Array,或者其他類似對(duì)象的混合體,它將會(huì)被放進(jìn)Blob。DOMStrings會(huì)被編碼為UTF-8。
options 是可選的,它可能會(huì)指定如下兩個(gè)屬性:
type,默認(rèn)值為 "",它代表了將會(huì)被放入到blob中的數(shù)組內(nèi)容的MIME類型。
endings,默認(rèn)值為"transparent",用于指定包含行結(jié)束符n的字符串如何被寫入。 它是以下兩個(gè)值中的一個(gè): "native",代表行結(jié)束符會(huì)被更改為適合宿主操作系統(tǒng)文件系統(tǒng)的換行符,或者 "transparent",代表會(huì)保持blob中保存的結(jié)束符不變。
示例var debug = {hello: "world"}; var blob = new Blob([JSON.stringify(debug, null, 2)], {type : "application/json"});二、URL對(duì)象
通過創(chuàng)建URL對(duì)象指定文件的下載鏈接。
構(gòu)造函數(shù)創(chuàng)建新的URL表示指定的File對(duì)象或者Blob對(duì)象。
objectURL = window.URL.createObjectURL(blob);window.URL.revokeObjectURL()
在每次調(diào)用createObjectURL()方法時(shí),都會(huì)創(chuàng)建一個(gè)新的 URL 對(duì)象,即使你已經(jīng)用相同的對(duì)象作為參數(shù)創(chuàng)建過。當(dāng)不再需要這些 URL 對(duì)象時(shí),每個(gè)對(duì)象必須通過調(diào)用 URL.revokeObjectURL()方法來釋放。瀏覽器會(huì)在文檔退出的時(shí)候自動(dòng)釋放它們,但是為了獲得最佳性能和內(nèi)存使用狀況,你應(yīng)該在安全的時(shí)機(jī)主動(dòng)釋放掉它們。
window.URL.revokeObjectURL(objectURL);三、利用標(biāo)簽下載
const link = document.createElement("a");href屬性指定下載鏈接
link.href = window.URL.createObjectURL(blob);dowload屬性指定文件名
download 屬性規(guī)定被下載的超鏈接目標(biāo)。在標(biāo)簽中必須設(shè)置 href 屬性。該屬性也可以設(shè)置一個(gè)值來規(guī)定下載文件的名稱。所允許的值沒有限制,瀏覽器將自動(dòng)檢測(cè)正確的文件擴(kuò)展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。
link.download = fileName;click()事件觸發(fā)下載
link.click();四、格式轉(zhuǎn)換
MIME類型使用text/plain,用.txt文件的格式編碼去下載doc(docx)文件(doc(docx)文件每次打開需要選擇合適的編碼,暫未找到解決方案,歡迎補(bǔ)充)。
const foo = {hello: "world"}; const blob = new Blob([JSON.stringify(foo)], {type: "text/plain"}); const fileName = `${new Date().valueOf()}.doc`; const link = document.createElement("a"); link.href = window.URL.createObjectURL(blob); link.download = fileName; link.click(); window.URL.revokeObjectURL(link.href);
注 :下載指定擴(kuò)展名的文件只需要對(duì)照MIME 參考手冊(cè)設(shè)置type即可。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95250.html
摘要:它是以下兩個(gè)值中的一個(gè),表示行結(jié)束符會(huì)被更改為適合宿主操作系統(tǒng)文件系統(tǒng)的換行符,表示會(huì)保持中保存的結(jié)束符不變。方法對(duì)象有一個(gè)方法,返回一個(gè)新的對(duì)象,包含了源對(duì)象中指定范圍內(nèi)的數(shù)據(jù)。這將會(huì)把它的屬性設(shè)為被傳入的值。 在一般的Web開發(fā)中,很少會(huì)用到Blob,但Blob可以滿足一些場(chǎng)景下的特殊需求。Blob,Binary Large Object的縮寫,代表二進(jìn)制類型的大對(duì)象。Blob的概...
摘要:它是以下兩個(gè)值中的一個(gè),表示行結(jié)束符會(huì)被更改為適合宿主操作系統(tǒng)文件系統(tǒng)的換行符,表示會(huì)保持中保存的結(jié)束符不變。方法對(duì)象有一個(gè)方法,返回一個(gè)新的對(duì)象,包含了源對(duì)象中指定范圍內(nèi)的數(shù)據(jù)。這將會(huì)把它的屬性設(shè)為被傳入的值。 在一般的Web開發(fā)中,很少會(huì)用到Blob,但Blob可以滿足一些場(chǎng)景下的特殊需求。Blob,Binary Large Object的縮寫,代表二進(jìn)制類型的大對(duì)象。Blob的概...
摘要:實(shí)現(xiàn)并發(fā)請(qǐng)求實(shí)現(xiàn)并發(fā)請(qǐng)求生成并下載字符串文件首先我們需要了解一個(gè)特殊的數(shù)據(jù)格式。如果類型未知,則該值為空字符串。表示狀態(tài)的數(shù)字。一旦完成,屬性中將包含一個(gè)字符串以表示所讀取的文件內(nèi)容。 在web開發(fā)中,如果你想讓用戶下載或者導(dǎo)出一個(gè)文件,應(yīng)該怎么做呢?傳統(tǒng)的做法是在后端存儲(chǔ)或者即時(shí)生成一個(gè)文件來提供下載功能,這樣的優(yōu)勢(shì)是可以做權(quán)限控制、數(shù)據(jù)二次處理,但缺點(diǎn)是需要額外發(fā)起請(qǐng)求、增大服務(wù)端...
摘要:實(shí)現(xiàn)并發(fā)請(qǐng)求實(shí)現(xiàn)并發(fā)請(qǐng)求生成并下載字符串文件首先我們需要了解一個(gè)特殊的數(shù)據(jù)格式。如果類型未知,則該值為空字符串。表示狀態(tài)的數(shù)字。一旦完成,屬性中將包含一個(gè)字符串以表示所讀取的文件內(nèi)容。 在web開發(fā)中,如果你想讓用戶下載或者導(dǎo)出一個(gè)文件,應(yīng)該怎么做呢?傳統(tǒng)的做法是在后端存儲(chǔ)或者即時(shí)生成一個(gè)文件來提供下載功能,這樣的優(yōu)勢(shì)是可以做權(quán)限控制、數(shù)據(jù)二次處理,但缺點(diǎn)是需要額外發(fā)起請(qǐng)求、增大服務(wù)端...
閱讀 1275·2021-11-23 09:51
閱讀 2668·2021-09-03 10:47
閱讀 2250·2019-08-30 15:53
閱讀 2435·2019-08-30 15:44
閱讀 1386·2019-08-30 15:44
閱讀 1211·2019-08-30 10:57
閱讀 1938·2019-08-29 12:25
閱讀 1101·2019-08-26 11:57