欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中blob對象和file對象的區(qū)別及相互轉(zhuǎn)換實例

 更新時間:2025年04月03日 10:22:31   作者:遇見很ok  
在JavaScript中,File和Blob是Web?API提供的兩個重要對象,用于處理文件和二進制數(shù)據(jù),這篇文章主要介紹了JavaScript中blob對象和file對象的區(qū)別及相互轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下

前言

在 JavaScript 中,Blob 對象和 File 對象都代表二進制數(shù)據(jù),且它們有很多相似之處,但也有一些關(guān)鍵的區(qū)別。以下是它們的主要對比:

1. Blob 對象:

  • Blob 是一種表示不可變的原始數(shù)據(jù)的類,可以是任意類型的二進制數(shù)據(jù)。
  • 它通常用于處理文件或其他原始數(shù)據(jù)類型,比如圖片、音頻、視頻等。
  • Blob 可以由多個部分組成,也就是說,它可以是一個二進制數(shù)據(jù)的集合。

創(chuàng)建 Blob 示例:

const blob = new Blob(["Hello, world!"], { type: "text/plain" });

主要特征:

  • Blob 對象是一個通用的二進制數(shù)據(jù)容器。
  • 它沒有與文件相關(guān)的元數(shù)據(jù)(如文件名、文件路徑等)。
  • Blob 主要用于處理大數(shù)據(jù),如從服務(wù)器獲取的二進制數(shù)據(jù)流。

2. File 對象:

  • File 繼承自 Blob,是 Blob 的一個子類,代表的是用戶的文件。
  • File 對象除了包含與 Blob 相同的二進制數(shù)據(jù)外,還包含一些額外的屬性,比如文件名和文件路徑等。
  • 通常,File 對象是通過文件選擇器(<input type="file">)或拖放操作從用戶系統(tǒng)中獲取的。

創(chuàng)建 File 示例:

const file = new File(["Hello, world!"], "hello.txt", { type: "text/plain" });

主要特征:

  • File 是專門設(shè)計來表示用戶文件的,具有額外的文件相關(guān)信息,如 name(文件名)和 lastModified(最后修改時間)。
  • 它通常用在與文件操作相關(guān)的場景,例如文件上傳、下載等。
  • File 實際上是一個 Blob,因此你可以使用 Blob 上的方法(如 slice)在 File 對象上進行操作。

關(guān)鍵區(qū)別:

特性BlobFile
繼承關(guān)系Blob 是基礎(chǔ)類File 是 Blob 的子類
額外元數(shù)據(jù)沒有有:如文件名 name 和 lastModified
使用場景用于處理任意的二進制數(shù)據(jù)用于表示文件,通常來自用戶文件選擇
創(chuàng)建方式可以通過代碼直接創(chuàng)建通常通過文件選擇器或拖放獲取

總結(jié):

  • Blob 是一個通用的二進制數(shù)據(jù)容器,不包含文件的元數(shù)據(jù);而 File 是 Blob 的擴展,代表著帶有元數(shù)據(jù)的文件,通常與文件操作相關(guān)。

兩個對象進行相互轉(zhuǎn)換

從 Blob 轉(zhuǎn)換為 File

可以通過構(gòu)造 File 對象的方式將 Blob 轉(zhuǎn)換為 File。File 構(gòu)造函數(shù)接受三個參數(shù):文件內(nèi)容(通常是一個 Blob),文件名和可選的選項對象(比如文件類型)。

const blob = new Blob(["Hello, world!"], { type: "text/plain" }); 
// 將 Blob 轉(zhuǎn)換為 File 
const file = new File([blob], "hello.txt", { type: "text/plain" });
console.log(file); // File 對象,包含文件內(nèi)容、文件名等信息

j

從 File 轉(zhuǎn)換為 Blob

因為 File 本質(zhì)上是繼承自 Blob,所以可以直接將 File 對象當作 Blob 對象使用。轉(zhuǎn)換過程實際上不需要做任何特別的操作。如果你想獲取 File 中的 Blob 數(shù)據(jù),可以直接引用 File 對象本身,或者使用 File.slice() 方法創(chuàng)建一個新的 Blob

const file = new File(["Hello, world!"], "hello.txt", { type: "text/plain" });
 // File 本身就是一個 Blob,可以直接使用 
const blob = file; 

// 或者使用 slice 方法創(chuàng)建一個新的 Blob

 const newBlob = file.slice(0, file.size);

 console.log(blob); // Blob 對象,包含文件的二進制數(shù)據(jù)

 console.log(newBlob); // 新的 Blob 對象

總結(jié):

  • 從 Blob 轉(zhuǎn)換為 File 需要通過 File 構(gòu)造函數(shù),將 Blob 對象作為數(shù)據(jù)部分傳入。
  • 從 File 轉(zhuǎn)換為 Blob 可以直接使用 File 對象本身,因為 File 本質(zhì)上是 Blob 的一個子類。如果需要創(chuàng)建新的 Blob,可以使用 File.slice() 方法。

相關(guān)文章

  • javascript設(shè)計模式 封裝和信息隱藏(上)

    javascript設(shè)計模式 封裝和信息隱藏(上)

    今天博文關(guān)注的是javascript中的封裝,文章內(nèi)容來自《pro javascript design patterns》(有興趣的朋友可以直接去下)和自己對這一問題的理解
    2012-07-07
  • layui 實現(xiàn)表單和文件上傳一起傳到后臺的例子

    layui 實現(xiàn)表單和文件上傳一起傳到后臺的例子

    今天小編就為大家分享一篇layui 實現(xiàn)表單和文件上傳一起傳到后臺的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 10種JavaScript最常見的錯誤(小結(jié))

    10種JavaScript最常見的錯誤(小結(jié))

    這篇文章主要介紹了10種JavaScript最常見的錯誤(小結(jié)),查看了數(shù)千個項目后,發(fā)現(xiàn)了 10 個最常見的 JavaScript 錯誤。我們會告訴你什么原因?qū)е铝诉@些錯誤,以及如何防止這些錯誤發(fā)生
    2019-06-06
  • JavaScript逆向分析instagram登入過程

    JavaScript逆向分析instagram登入過程

    這篇文章主要介紹了JavaScript逆向分析instagram登入過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • js中獲取時間new Date()的全面介紹

    js中獲取時間new Date()的全面介紹

    下面小編就為大家?guī)硪黄猨s中獲取時間new Date()的全面介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • JavaScript 手動實現(xiàn)instanceof的方法

    JavaScript 手動實現(xiàn)instanceof的方法

    instanceof運算符用于檢測構(gòu)造函數(shù)的prototype屬性是否出現(xiàn)在某個實例對象的原型鏈上,本文重點給大家介紹JavaScript手動實現(xiàn)instanceof的問題,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • 有道JavaScript監(jiān)聽瀏覽器的問題

    有道JavaScript監(jiān)聽瀏覽器的問題

    相信大家在web項目中,經(jīng)常會用到j(luò)avascript的事件監(jiān)聽、事件冒泡這些東西。當然也包括window.opener,window.showModalDialog這些父子窗口的互操作。
    2010-06-06
  • 微信小程序開發(fā)之a(chǎn)nimation循環(huán)動畫實現(xiàn)的讓云朵飄效果

    微信小程序開發(fā)之a(chǎn)nimation循環(huán)動畫實現(xiàn)的讓云朵飄效果

    這篇文章主要介紹了微信小程序開發(fā)之a(chǎn)nimation循環(huán)動畫實現(xiàn)的讓云朵飄效果,結(jié)合實例形式分析了animation結(jié)合js時間函數(shù)實現(xiàn)循環(huán)動畫效果的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • 老生常談js中0到底是 true 還是 false

    老生常談js中0到底是 true 還是 false

    下面小編就為大家?guī)硪黄仙U刯s中0到底是 true 還是 false。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • JS中的算法與數(shù)據(jù)結(jié)構(gòu)之隊列(Queue)實例詳解

    JS中的算法與數(shù)據(jù)結(jié)構(gòu)之隊列(Queue)實例詳解

    這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之隊列(Queue),結(jié)合實例形式詳細分析了javascript中隊列的概念、原理、定義及常見操作技巧,需要的朋友可以參考下
    2019-08-08

最新評論