您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中Base64 、Blob與File相互轉換的方法是什么”,在日常操作中,相信很多人在PHP中Base64 、Blob與File相互轉換的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”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中Base64 、Blob與File相互轉換的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。