公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

一文搞懂 Blob、Stream 和 Buffer

freeflydom
2023年11月27日 11:41 本文熱度 1463

在Javascript中,BlobStreamBuffer 是常見的三種數據處理工具。下面我們一起去學習它們都是如何使用的,它們之間又有何區別和聯系。

Blob

Blob 對象表示一個不可變、原始數據的類文件對象。它可以存儲任何類型的數據,包括圖片、音頻和視頻等多媒體資源。它的數據可以按文本或二進制的格式進行讀取,也可以轉換成 ReadableStream 來用于數據操作,通常用來讀寫文件。(MDN

創建Blob對象

創建Blob對象可以使用以下兩種方法:

  1. 通過構造函數創建:

const myBlob = new Blob(["hello", "juejin"], { type: "text/plain" });


生成一個包含 text/plain 類型的Blob對象,其中內容為 hellojuejin

  1. 通過 URL.createObjectURL() 方法創建:

const file = document.getElementById('input').files[0];  
const url = URL.createObjectURL(file);  
const blob = new Blob([file], {type: 'image/png'});


上述代碼中通過 input 元素上傳了一個圖片,生成了一個 blob 對象。

Blob對象讀取

Blob 對象中的數據可以通過以下兩種方式讀取:

  1. FileReader對象的 readAsArrayBuffer() 方法可以讀取Blob對象中的二進制數據:

const reader = new FileReader(); reader.readAsArrayBuffer(blob); 
reader.onload = function () {     
var arrayBuffer = reader.result;     
console.log(arrayBuffer); 
}


  1. 通過 URL.createObjectURL() 方法生成的 Blob 鏈接可以直接用于 img 標簽或 a 標簽的下載鏈接:

let xhr = new XMLHttpRequest(); xhr.open('GET', someUrl); 
xhr.responseType = 'blob';  
xhr.onload = function () {   
let blob = xhr.response;   
const blob = new Blob(['\ufeff', blob], { type: 'text/csv,charset=utf-8' });  
 const url = window.URL.createObjectURL(blob); 
 };  
 xhr.send();


Blob的應用場景

Blob 對象可以用于 web 端和服務器端的文件上傳、音視頻播放、數據處理等領域。在前端中,我們可以將 Blob 對象作為表單數據提交到服務器,也可以通過 Blob 對象構建音視頻播放器,實現在線播放音視頻。(文檔

Stream

Stream 是 Javascript 中數據流處理模塊的一種實現方式。它可以解決內存受限、網絡帶寬有限等問題。

Stream 是一個抽象接口,Node.js 中有很多對象實現了這個接口。例如,對http 服務器發起請求的request 對象就是一個 Stream,還有 stdout(標準輸出)。

Node.js 中的流類型:

  • Readable - 可讀操作。

  • Writable - 可寫操作。

  • Duplex - 可讀可寫操作。

  • Transform - 操作被寫入數據,然后讀出結果。

創建Stream對象

在 Node.js 環境下,可以通過fs模塊的 createReadStream() 方法創建一個可讀的 Stream 對象,并通過 pipe() 方法進行數據傳輸:

const fs = require('fs'); 
const readStream = fs.createReadStream('a.txt'); 
const writeStream = fs.createWriteStream('b.txt');   
readStream.pipe(writeStream);


Stream的事件監聽

Stream 對象也是一個事件觸發器,通過監聽 Stream 對象的事件可以實現對數據流處理的控制:

readStream.on('data', chunk => {     
console.log(chunk); 
}).on('end', () => {     console.log('結束'); });


Stream的應用場景

Stream對象可以用于大文件的讀取、寫入、壓縮、加密、解密等領域。在 Node.js 環境下,Stream 對象具有非常重要的地位,例如在 HTTP 請求處理、文件系統操作和數據庫讀取等領域中都會用到 Stream。

Buffer

Javascript 語言自身只有字符串數據類型,沒有二進制數據類型。但在處理像 TCP 流或文件流時,必須使用到二進制數據。因此在Node.js中,定義了一個 Buffer 類,該類用來創建一個專門存放二進制數據的緩存區。(文檔

創建Buffer對象

創建 Buffer 對象有以下幾種方法:

  1. 通過 new 關鍵字創建

const buffer = new Buffer('hello', 'utf-8');


  1. 通過 Buffer.alloc() 靜態方法創建:

const buffer = Buffer.alloc(10);


  1. 通過 Buffer.from() 靜態方法創建:

const buffer = Buffer.from('juejin', 'utf-8');


Buffer的讀寫操作

Buffer 對象可以進行讀寫操作,例如對 Buffer 對象的第一個字節進行讀取:

const buffer = Buffer.from('hello', 'utf-8'); const firstByte = buffer[0]; console.log(firstByte);


對 Buffer 對象的前兩個字節進行寫入:

const buffer = Buffer.alloc(5); buffer.writeUInt16BE(0x1234, 0); console.log(buffer.toString('hex'));


Buffer的應用場景

Buffer 對象在 Node.js 環境下被廣泛應用于文件流的讀寫、網絡流的傳輸、加密算法的實現等領域,在 Web 端也被一些第三方庫使用。由于 Buffer 對象的特殊性,所以需要注意其內存消耗,避免造成內存泄漏等問題。

總結

Blob、Stream 和 Buffer 是 Javascript 中常用的三種數據處理工具,它們在不同的場景下發揮著重要作用,熟練掌握這些工具是非常有必要的,它可以有效提高數據處理的效率,實現更加復雜的數據操作,幫助我們更高效的完成工作和需求。


作者:王絕境
鏈接:https://juejin.cn/post/7291498745624182821
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。



該文章在 2023/11/27 11:41:17 編輯過
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产一区免费视频 | 99久久无码一区人妻 | 国产精品一区二区久久优播 | 东京热app| 国产成人av国语在 | 福利姬国产精品一区在线 | 国产激情一区二区三区无码 | 国产精品无码一区视频 | 国产精品免费av片 | 精品国产一区二区三区香蕉欧美 | 国产高清国内精 | 国产成人午夜福利在线观看者 | 国产在视频一区二区三区吞精 | 国产在线精品一区二区不卡顿 | 国产欧美岛国第一页在线 | 国产夫妻一区二区 | av在线播放网址 | 成人国产一区二区精品 | 91在线无码精品看片 | 精品国产福利观看在线福祉 | 91精品啪在线观看国产线免费 | 国产91一区二区在线播放不卡 | 国产精品无码一区二区三区毛片 | 国产福利一区视频引发网友热议 | av亚欧洲日产国码无 | 2025国产在线观看无码 | 果冻传媒app在线播放 | 国产福利无码一区色费 | 国产尤物一区二区三区在线观看 | 国产一区二区三区av天堂 | 国产69精品久久久久无码 | www在线观看免费 | 国产精品夜间视频香蕉 | 国产一区二区三区中文字幕 | 国产欧美精品一区二区三区 | 国产亚洲一区二区手机在线观看 | 国产精品亚洲一区二区三区 | 国产白嫩美女在线观看 | 国产日韩一区二区三区高清 | 国产丝袜足交在线观看 | www.一区二 |