首頁  >  文章  >  後端開發  >  聊聊PHP中Base64 、Blob與File的相互轉換方法

聊聊PHP中Base64 、Blob與File的相互轉換方法

藏色散人
藏色散人轉載
2023-03-16 15:19:413307瀏覽

這篇文章為大家帶來了關於php的相關知識,其中主要跟大家聊一聊Base64 、Blob和File之間是怎麼相互轉換的?有興趣的朋友下面一起來看看吧,希望對大家有幫助。

聊聊PHP中Base64 、Blob與File的相互轉換方法

前言

在取得圖片時,遇到需要轉換格式的情況,所以記錄下來分享。

正文

一、格式的基本介紹

  • Base64

Base64是網路上最常見的傳送8Bit位元組碼的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進位資料的方法 Base64文件入口

舉例

聊聊PHP中Base64 、Blob與File的相互轉換方法

  • #Blob

Blob 物件表示一個不可變、原始資料的類別檔案物件。它的資料可以按文字或二進位的格式進行讀取,也可以轉換成 ReadableStream來用於資料操作。 Blob文件入口

舉例範例

聊聊PHP中Base64 、Blob與File的相互轉換方法

  • File

檔案(File)介面提供有關檔案的信息,並允許網頁中的JavaScript 存取其內容。 File文檔入口
舉例

聊聊PHP中Base64 、Blob與File的相互轉換方法

#就不過多介紹了,主要來講如果轉換。

二、如何判斷這三種格式

1.判斷是否為Base64字串

// 判断是否为base64格式字符串
function isBase64(str) {
    //正则表达式判断
    var reg = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i;
    return reg.test(str) //返回 true or false
}

2.判斷是否為Blob物件

console.log(data instanceof Blob)   //ture  or  false

3 .判斷是否為File物件

console.log(data instanceof File && !data instanceof Blob)   //ture  or  false

PS:
Blob和File都用instanceof來判斷是否為對應類型資料
有一點需要注意,File物件也是Blob對象,因為File繼承於Blob,所以其中的判斷邏輯可以自己定義

三、格式之間的轉換

1.Base64轉換為File

function dataURLtoFile(dataurl, filename) {
    var arr = dataurl.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 File([u8arr], filename, { type: mime });
}
  • 需要傳遞兩個參數,第一個是數據,第二個是自訂檔名字串

2.Base64轉換為Blob

function dataURLtoBlob(dataurl, filename) {
    var arr = dataurl.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 });
}
  • 和轉File基本上一樣,就最後一句return不一樣

# #3.Blob轉File

function blobToFile(blob) {
    return new File([blob], 'screenshot.png', { type: 'image/jpeg' })
}

  • 這裡和

    Base64轉File其實用的都是new File()這個方法,上面的第二個參數是傳進來的,這裡是定死的,這個參數不是很重要,可以自行修改函數,方法都已經提供了,直接使用就可以。

推薦學習:《

PHP影片教學

#

以上是聊聊PHP中Base64 、Blob與File的相互轉換方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除