国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

js里base64與file之間的轉(zhuǎn)換

這篇具有很好參考價值的文章主要介紹了js里base64與file之間的轉(zhuǎn)換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、base64轉(zhuǎn)為file

在 js中,可以使用 Blob 對象將 base64 字符串轉(zhuǎn)換為 File 對象。

方法一、base64 直接轉(zhuǎn)換為 File 對象:

首先, 需要從 base64 字符串中獲取文件類型, 然后將文件類型和 base64 字符串轉(zhuǎn)換為 Blob 對象。最后, 使用 Blob 對象構(gòu)造函數(shù)創(chuàng)建一個 File 對象。

下面是一個示例函數(shù),它接收一個 base64 字符串和文件名,并返回一個 File 對象:

function base64ToFile(base64, fileName) {
  let arr = base64.split(",");
  let mime = arr[0].match(/:(.\*?);/)[1];
  let bstr = atob(arr[1]);
  let n = bstr.length;
  let u8arr = new Uint8Array(n);

  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], fileName, { type: mime });
}

需要注意的是, atobUint8Array 是在所有現(xiàn)代瀏覽器中都可用的。在舊瀏覽器中,需要使用其它庫來替代這兩個函數(shù)。

如果需要在使用這個函數(shù)之前檢查文件類型是否支持,可以在函數(shù)中增加文件類型校驗的代碼。

方法二、base64 先轉(zhuǎn)換為 Blob,再由 Blob 轉(zhuǎn)換為 File:

在 JavaScript 中,可以使用 Blob 對象將 base64 字符串轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)對象 Blob。

首先,使用 atob() 函數(shù)將 base64 字符串解碼為二進(jìn)制字符串。然后,使用 Uint8Array 構(gòu)造函數(shù)將二進(jìn)制字符串轉(zhuǎn)換為字節(jié)數(shù)組。最后,使用 Blob 構(gòu)造函數(shù),將字節(jié)數(shù)組作為第一個參數(shù),創(chuàng)建一個新的 Blob 對象。

1、先將 base64 轉(zhuǎn)換為 Blob:
// 將 base64 轉(zhuǎn)換為 Blob
function base64ToBlob(base64) {
  var arr = base64.split(","),
    mime = arr[0].match(/:(.\*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {
    type: mime,
  });
}

使用類似這樣的方式構(gòu)造出來的 Blob 對象就可以按照二進(jìn)制文件的方式來使用,可以作為參數(shù)傳入 FileReader, 通過 FormData 對象上傳到服務(wù)器等。

需要注意的是, atob 和 Uint8Array 是在所有現(xiàn)代瀏覽器中都可用的。在舊瀏覽器中,需要使用其它庫來替代這兩個函數(shù)。

如果需要在使用這個函數(shù)之前檢查文件類型是否支持,可以在函數(shù)中增加文件類型校驗的代碼。

另外,在 HTML5 中,可以使用 canvas 元素的 toBlob()方法 將圖片轉(zhuǎn)換為 Blob 對象,這個方法是基于 HTMLCanvasElement 元素的, 可以將一張圖片轉(zhuǎn)成 base64 后,再使用 canvas 的方法將圖片繪制在 canvas 元素上,然后使用 toBlob() 方法獲取到 Blob 對象。

還有一些第三方庫,比如 FileSaver.js, 可以使用它來將 Blob 對象保存在本地。

這些方法都能達(dá)到相同的目的,可以根據(jù)項目中使用的 JavaScript 環(huán)境和需要的復(fù)雜度來進(jìn)行選擇

在 JavaScript 中,可以使用 File 構(gòu)造函數(shù)將一個 Blob 對象轉(zhuǎn)換為一個 File 對象。

這個構(gòu)造函數(shù)接收兩個參數(shù): 第一個參數(shù)是一個 Blob 或者 ArrayBuffer 對象,第二個參數(shù)是文件的名字。

2、再將 Blob 轉(zhuǎn)換為 File:
function blobToFile(blob, fileName) {
  return new File([blob], fileName);
}

由于 Blob 是 File 的超集, 所以可以直接將 Blob 對象轉(zhuǎn)換為 File 對象, 這樣就可以使用 File 對象的各種方法,例如獲取文件名、類型等。

由于這個是新的 API, 可能在部分瀏覽器上不能使用, 也可以使用第三方庫來兼容在舊瀏覽器上使用。

二、File => base64

方法一、File 直接轉(zhuǎn)換為 base64:

使用 FileReader 對象將 File 對象轉(zhuǎn)換為 base64 編碼的字符串。以下是一個簡單的 JavaScript 代碼示例:

function fileToBase64(file) {
  return new Promise((resolve, reject) => {
    // 創(chuàng)建一個新的 FileReader 對象
    const reader = new FileReader();
    // 讀取 File 對象
    reader.readAsDataURL(file);
    // 加載完成后
    reader.onload = function () {
      // 將讀取的數(shù)據(jù)轉(zhuǎn)換為 base64 編碼的字符串
      const base64String = reader.result.split(",")[1];
      // 解析為 Promise 對象,并返回 base64 編碼的字符串
      resolve(base64String);
    };

    // 加載失敗時
    reader.onerror = function () {
      reject(new Error("Failed to load file"));
    };
  });
}

方法二、File 先轉(zhuǎn)換為 Blob,再由 Blob 轉(zhuǎn)換為 base64:

1、先將 File 轉(zhuǎn)換為 Blob:

File 對象本身就是一種特殊類型的 Blob 對象,因此將 File 轉(zhuǎn)換為 Blob 可以直接使用 File 對象。

如果需要將 Blob 對象轉(zhuǎn)換為另一種 Blob 對象,可以使用 Blob 構(gòu)造函數(shù),將原始 Blob 對象作為參數(shù)傳遞,然后使用新構(gòu)造出來的 Blob 對象進(jìn)行操作。以下是一個將 File 對象轉(zhuǎn)換為 Blob 對象的示例代碼:

function fileToBlob(file) {
  return new Blob([file], { type: file.type });
}
2、再將 Blob 轉(zhuǎn)換為 base64:

可以使用 FileReader 對象讀取 Blob 數(shù)據(jù)并轉(zhuǎn)換為 DataURL。Data URL 是一種基于 Base64 編碼的 URL 方案,可以用于在網(wǎng)頁中嵌入圖片或其他資源。

以下是一個將 Blob 對象轉(zhuǎn)換為 base64 字符串的示例代碼:

function blobToBase64(blob) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(blob);
    reader.onloadend = () => resolve(reader.result.split(",")[1]);
    reader.onerror = reject;
  });
}

上述代碼中的 blobToBase64 函數(shù)接收一個 Blob 對象作為參數(shù),并返回一個 Promise 對象,該 Promise 對象最終返回一個 base64 字符串。在函數(shù)內(nèi)部,創(chuàng)建了一個 FileReader 對象,并調(diào)用其 readAsDataURL 方法將 Blob 對象讀取為 DataURL。在讀取完成后,我們使用 Promise 對象的 resolve 方法將 DataURL 中的 base64 字符串提取出來并返回。如果讀取過程中出現(xiàn)錯誤,則使用 reject 方法拒絕 Promise 對象。文章來源地址http://www.zghlxwxcb.cn/news/detail-697590.html

到了這里,關(guān)于js里base64與file之間的轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JS】前端base64轉(zhuǎn)圖片F(xiàn)ile對象

    【JS】前端base64轉(zhuǎn)圖片F(xiàn)ile對象

    base64ToFile.js

    2024年02月05日
    瀏覽(27)
  • js實現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    js實現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    Blob對象表示一個不可變、原始數(shù)據(jù)的類文件對象,Blob表示的不一定是JavaScript原生格式的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于js實現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式 url 轉(zhuǎn) base64 Blob 轉(zhuǎn) url Blob 轉(zhuǎn) base64 base64 轉(zhuǎn)Blob base64 轉(zhuǎn) url 一般來說前端展示圖片會通過三種方式:

    2024年02月03日
    瀏覽(30)
  • JS前端讀取本地上傳的File文件對象內(nèi)容(包括Base64、text、JSON、Blob、ArrayBuffer等類型文件)

    FileReader.readAsArrayBuffer() - Web API 接口參考 | MDN FileReader 接口提供的 readAsArrayBuffer() 方法用于啟動讀取指定的 Blob 或 File 內(nèi)容。當(dāng)讀取操作完成時,readyState 變成 DONE(已完成),并觸發(fā) loadend 事件,同時 result 屬性中將包含一個 ArrayBuffer 對象以表示所讀取文件的數(shù)據(jù)。 https://

    2024年02月15日
    瀏覽(59)
  • Java Base64 和 File 之間互轉(zhuǎn)

    1、Base64 轉(zhuǎn) File 2、File 轉(zhuǎn) Base64

    2024年02月16日
    瀏覽(19)
  • 圖片格式轉(zhuǎn)換(File、Blob、base64)

    圖片格式轉(zhuǎn)換(File、Blob、base64)

    前言 記錄一下比較常見的圖片格式(File、Blob、base64)在不同的場景他們之間的相互轉(zhuǎn)換的方法。 一、類型簡介 Blob BLOB(binary large object): 二進(jìn)制大對象,是一個可以存儲二進(jìn)制文件的容器。 在計算機(jī)中,BLOB常常是數(shù)據(jù)庫中用來存儲二進(jìn)制文件的字段類型。 屬性名稱 讀/寫 描

    2024年02月02日
    瀏覽(32)
  • 前端base64轉(zhuǎn)file文件方法

    有這樣一種場景,比如canvas截取部分dom作為圖片,上傳到服務(wù)器,而canvas截取的圖片返回的是base64字符串,而服務(wù)器接收的是file文件。因此我們需要將base64字符串轉(zhuǎn)成file文件,存儲到服務(wù)器中。 方法一:通過new File(),將base64直接轉(zhuǎn)成file文件。 (此方法需要考慮瀏覽器兼容

    2024年02月11日
    瀏覽(27)
  • 使用JavaScript將圖片轉(zhuǎn)換為Base64

    在Web開發(fā)中,我們經(jīng)常需要將圖片轉(zhuǎn)換為Base64格式,以便在不依賴外部資源的情況下直接在HTML中使用。在這篇文章中,我將向您展示如何使用JavaScript將圖片轉(zhuǎn)換為Base64格式。 ??FileReade方式 ????????首先,我們需要創(chuàng)建一個FileReader對象,它是HTML5中的一個API,用于讀取文

    2024年02月03日
    瀏覽(20)
  • 前端FileReader對象實現(xiàn)圖片file文件轉(zhuǎn)base64

    前端FileReader對象實現(xiàn)圖片file文件轉(zhuǎn)base64

    1、file轉(zhuǎn)base64具體代碼 2、原理解析 ? 上面封裝的方法,其原理主要是借助 FileReader 對象來實現(xiàn)圖片格式的轉(zhuǎn)換, FileReader 對象中的 readAsDataURL() 方法,可以讀取一個 File 或 Blob 類型的文件,并將其轉(zhuǎn)換為base64格式的字符串。但要注意的一點是:我們通過 readAsDataURL() 方法去讀

    2023年04月09日
    瀏覽(33)
  • 將html字符串中的base64圖片轉(zhuǎn)換成file并上傳

    目的 解決富文本編輯器中復(fù)制粘貼的圖片 base64 字符串過長導(dǎo)致無法存儲到數(shù)據(jù)庫的問題 思路 通過正則 獲取html字符串中里面的所有圖片 base64 數(shù)組 然后每個圖片base64 轉(zhuǎn)成file 使用上傳文件的函數(shù) 上傳到服務(wù)器上. 將上傳后獲取到的圖片訪問url 替換成 數(shù)據(jù)里面的 img 的 src

    2024年01月23日
    瀏覽(58)
  • 前端 base64與圖片相互轉(zhuǎn)換

    前端 base64與圖片相互轉(zhuǎn)換

    base64轉(zhuǎn)圖片 如下圖:(后端返回的數(shù)據(jù)) base64轉(zhuǎn)換圖片文件 圖片(url)轉(zhuǎn)換base64 便捷的圖片轉(zhuǎn)化base64 利用 Chrome 瀏覽器,在 chrome 下新建一個窗口,然后把要轉(zhuǎn)化的圖片直接拖入瀏覽器,打開控制臺,點 Source,如下圖所示,點擊圖片,右側(cè)就會顯示該圖片的 base64 編碼

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包