JavaScript Blob Type 介紹
JavaScript 是一種很特別的編程語(yǔ)言,在前端框架中它經(jīng)常被用到。JavaScript Blob Type 在 Web 開(kāi)發(fā)中也很常用,它是可以管控文件類型的一個(gè)對(duì)象,可以根據(jù)傳入的數(shù)據(jù)和類型創(chuàng)建一個(gè) Blob 對(duì)象,表示一個(gè)不可變的、原始數(shù)據(jù)的類文件對(duì)象,用于存儲(chǔ)非結(jié)構(gòu)化的二進(jìn)制和文本數(shù)據(jù)。Blob 對(duì)象可以通過(guò) URL.createObjectURL() 作為參數(shù)傳遞給 web workers、a href 和 img src 等屬性,被瀏覽器解析,并顯示或執(zhí)行。下面通過(guò)代碼和實(shí)例解釋 Blob 對(duì)象的使用。
下面是一段使用 Blob 的代碼,包括了生成 Blob 對(duì)象,通過(guò) URL.createObjectURL 方法生成鏈接以及使用鏈接來(lái)下載文件:
var data = "Hello, World!"; var blob = new Blob([data], {type: 'text/plain'}); var url = URL.createObjectURL(blob); var a = document.createElement("a"); a.href = url; a.download = "example.txt"; document.body.appendChild(a); a.click(); a.remove();上述代碼演示的是如何將一個(gè)字符串?dāng)?shù)據(jù)生成一個(gè)文本格式的 Blob 對(duì)象,并生成一個(gè)鏈接,通過(guò)該鏈接來(lái)下載文件。這段代碼中用到了三個(gè)關(guān)鍵的點(diǎn):Blob、URL.createObjectURL() 和 a 標(biāo)簽。Blob 接受一個(gè)數(shù)據(jù)數(shù)組和一個(gè)配置選項(xiàng)參數(shù),用于聲明數(shù)據(jù)數(shù)組類型,然后將它們封裝在一個(gè)不可變的文件對(duì)象中。URL.createObjectURL() 將 Blob 對(duì)象作為參數(shù),返回一個(gè)用于可下載的 URL,a 標(biāo)簽中設(shè)置屬性,即可實(shí)現(xiàn)文件下載。 下面是生成一個(gè)圖片對(duì)象的代碼演示:
var img = new Image(); img.onload = function () { var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); canvas.toBlob(function (blob) { var url = URL.createObjectURL(blob); var a = document.createElement("a"); a.href = url; a.download = "example.png"; document.body.appendChild(a); a.click(); a.remove(); }, "image/png"); } img.src = "example.png";上述代碼演示了如何把一個(gè)圖片對(duì)象生成一個(gè) Blob 對(duì)象,并進(jìn)行下載。方法是,首先創(chuàng)建一個(gè)圖片對(duì)象,加載圖片后通過(guò)canvas將圖片畫(huà)到canvas上,然后將canvas轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),并生成一個(gè)圖片格式的 Blob 對(duì)象,同樣通過(guò) URL.createObjectURL() 生成一個(gè)鏈接,用于下載。 綜上所述,JavaScript Blob Type 對(duì)于前端框架中的二進(jìn)制文件存儲(chǔ)和下載等操作非常方便,而且用法簡(jiǎn)單,可以支持多種文件格式,也適用于大部分瀏覽器,是一個(gè)非常重要的前端文件處理工具。