這篇文章為大家帶來了關於php的相關知識,其中主要跟大家聊一聊Base64 、Blob和File之間是怎麼相互轉換的?有興趣的朋友下面一起來看看吧,希望對大家有幫助。
前言
在取得圖片時,遇到需要轉換格式的情況,所以記錄下來分享。
正文
一、格式的基本介紹
Base64
Base64是網路上最常見的傳送8Bit位元組碼的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進位資料的方法 Base64文件入口
舉例
#Blob
Blob
物件表示一個不可變、原始資料的類別檔案物件。它的資料可以按文字或二進位的格式進行讀取,也可以轉換成 ReadableStream
來用於資料操作。 Blob文件入口
舉例範例
File
檔案(File
)介面提供有關檔案的信息,並允許網頁中的JavaScript 存取其內容。 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中文網其他相關文章!