一、blob:http是什麼?
在講blob:http之前,我們先來了解一下blob的概念。簡單來說,blob就是二進制大對象(Binary Large OBject)的縮寫,是一種存儲二進制數據的容器。而blob:http則是一個URL,指向一個本地瀏覽器緩存中的二進制數據,常用於處理文件上傳、下載、音視頻播放等場景。
二、blob:http如何生成?
我們可以通過以下幾種方式來生成一個blob:http的URL:
1. 使用XMLHttpRequest發起GET請求,並在回調函數中將服務器返回的二進制數據以blob形式存儲到本地瀏覽器緩存中,再使用window.URL.createObjectURL方法生成blob:http的URL。
“`
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, ‘http://example.com/somefile.mp3’, true);
xhr.responseType = ‘blob’;
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: ‘audio/mpeg’});
var audio = document.createElement(‘audio’);
audio.src = window.URL.createObjectURL(blob);
}
};
xhr.send();
“`
2. 使用HTML5的File API,結合FormData對象上傳文件,獲取上傳文件的Blob對象,再使用window.URL.createObjectURL方法生成blob:http的URL。
“`
var formData = new FormData();
formData.append(‘file’, document.getElementById(‘fileInput’).files[0]);
var xhr = new XMLHttpRequest();
xhr.open(‘POST’, ‘http://example.com/upload’, true);
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: ‘image/png’});
var img = document.createElement(‘img’);
img.src = window.URL.createObjectURL(blob);
}
};
xhr.send(formData);
“`
三、blob:http的應用場景
1. 文件上傳:使用FormData對象上傳文件,獲取上傳文件的Blob對象,再使用window.URL.createObjectURL方法生成blob:http的URL。
2. 文件下載:使用XMLHttpRequest發起GET請求,獲取服務器返回的二進制數據,將數據以blob形式存儲到本地瀏覽器緩存中,再使用window.URL.createObjectURL方法生成blob:http的URL。
3. 音視頻播放:將音視頻資源以blob形式存儲到本地瀏覽器緩存中,再使用window.URL.createObjectURL方法生成blob:http的URL,將URL賦值給audio或video元素的src屬性即可播放。
4. 圖片預覽:使用FileReader對象讀取本地文件,將文件以blob形式存儲到本地瀏覽器緩存中,再使用window.URL.createObjectURL方法生成blob:http的URL,將URL賦值給img元素的src屬性即可預覽。
5. Canvas操作:將Canvas畫布內容以blob形式導出,再使用window.URL.createObjectURL方法生成blob:http的URL,將URL賦值給a標籤的href屬性即可下載或展示圖片。
四、小結
blob:http是一個非常實用的URL格式,它能幫助我們方便地在瀏覽器中處理二進制數據,包括文件上傳、下載、音視頻播放、圖片預覽等場景。掌握它的使用方法對於web開發工程師來說是非常重要的一項技能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237537.html