ea7是什么意思 ea7是什么意思網絡用語


ea7是什么意思 ea7是什么意思網絡用語


自從HTML5提供了video標簽 , 在網頁中播放視頻已經變成一個非常簡單的事,只要一個video標簽,src屬性設置為視頻的地址就完事了 。由于src指向真實的視頻 *** 地址 , 在早期一般網站資源文件不怎么通過referer設置防盜鏈,當我們拿到視頻的地址后可以隨意的下載或使用(每次放假回家,就會有親戚找我幫忙從一些視頻網站上下東西) 。
目前的云存儲服務商大部分都支持referer防盜鏈 。其原理就是在訪問資源時,請求頭會帶上發起請求的頁面地址,判斷其不存在(表示直接訪問圖片地址)或不在白名單內,即為盜鏈 。
可是從某個時間開始我們打開調試工具去看各大視頻網站的視頻src會發現,它們統統變成了這樣的形式 。

拿b站的一個視頻來看 , 紅框中的視頻地址,這個blob是個什么東西? 。
其實這個Blob URL也不是什么新技術 , 國內外出來都有一陣子了,但是網上的相關的文章不多也不是很詳細,今天就和大家一起分享學習一下 。
Blob和ArrayBuffer
最早是數據庫直接用Blob來存儲二進制數據對象,這樣就不用關注存儲數據的格式了 。在web領域,Blob對象表示一個只讀原始數據的類文件對象,雖然是二進制原始數據但是類似文件的對象 , 因此可以像操作文件對象一樣操作Blob對象 。
ArrayBuffer對象用來表示通用的、固定長度的原始二進制數據緩沖區 。我們可以通過new ArrayBuffer(length)來獲得一片連續的內存空間,它不能直接讀寫,但可根據需要將其傳遞到TypedArray視圖或 DataView 對象來解釋原始緩沖區 。實際上視圖只是給你提供了一個某種類型的讀寫接口,讓你可以操作ArrayBuffer里的數據 。TypedArray需指定一個數組類型來保證數組成員都是同一個數據類型,而DataView數組成員可以是不同的數據類型 。
TypedArray視圖的類型數組對象有以下幾個:
Int8Array:8位有符號整數,長度1個字節 。Uint8Array:8位無符號整數,長度1個字節 。Uint8ClampedArray:8位無符號整數,長度1個字節,溢出處理不同 。Int16Array:16位有符號整數,長度2個字節 。Uint16Array:16位無符號整數,長度2個字節 。Int32Array:32位有符號整數,長度4個字節 。Uint32Array:32位無符號整數,長度4個字節 。Float32Array:32位浮點數,長度4個字節 。Float64Array:64位浮點數,長度8個字節 。Blob與ArrayBuffer的區別是,除了原始字節以外它還提供了mime type作為元數據,Blob和ArrayBuffer之間可以進行轉換 。
File對象其實繼承自Blob對象,并提供了提供了name ,lastModifiedDate,size  , type 等基礎元數據 。
創建Blob對象并轉換成ArrayBuffer:
//創建一個以二進制數據存儲的html文件const text = "<div>hello world</div>";const blob = new Blob([text], { type: "text/html" }); // Blob {size: 22, type: "text/html"}//以文本讀取const textReader = new FileReader();textReader.readAsText(blob);textReader.onload = function() { console.log(textReader.result); // <div>hello world</div>};//以ArrayBuffer形式讀取const bufReader = new FileReader();bufReader.readAsArrayBuffer(blob);bufReader.onload = function() { console.log(new Uint8Array(bufReader.result)); // Uint8Array(22) [60, 100, 105, 118, 62, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 60, 47, 100, 105, 118, 62]};創建一個相同數據的ArrayBuffer , 并轉換成Blob:
//我們直接創建一個Uint8Array并填入上面的數據const u8Buf = new Uint8Array([60, 100, 105, 118, 62, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 60, 47, 100, 105, 118, 62]);const u8Blob = new Blob([u8Buf], { type: "text/html" }); // Blob {size: 22, type: "text/html"}const textReader = new FileReader();textReader.readAsText(u8Blob);textReader.onload = function() { console.log(textReader.result); // 同樣得到div>hello world</div>};更多Blob和ArrayBuffer的相關內容可以參看下面的資料:

推薦閱讀