>  기사  >  백엔드 개발  >  PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.

PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.

藏色散人
藏色散人앞으로
2023-03-16 15:19:413309검색

이 기사에서는 PHP에 대한 관련 지식을 제공합니다. 주로 Base64, Blob 및 File이 서로 변환되는 방법에 대해 설명합니다. 관심 있는 친구들은 아래를 살펴보시면 모두에게 도움이 되길 바랍니다.

PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.

서문

사진을 받다가 포맷을 변환해야 하는 상황이 생겨서 녹화해서 공유하게 되었습니다.

Text

1. 형식에 대한 기본 소개

  • Base64

Base64는 인터넷에서 8Bit 바이트코드를 전송하는 가장 일반적인 인코딩 방법 중 하나입니다. . 인쇄 가능한 문자로 이진 데이터를 나타내는 방법

예를 들어

PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.

  • Blob

Blob 객체는 불변의 원본 데이터 파일을 나타냅니다. 객체 같은. 해당 데이터는 텍스트 또는 바이너리 형식으로 읽거나 데이터 작업을 위해 ReadableStream으로 변환할 수 있습니다. 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에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.

🎜File🎜🎜🎜🎜File(🎜File🎜) 인터페이스는 파일에 대한 정보를 제공하고 웹 페이지의 JavaScript가 파일에 액세스할 수 있도록 허용합니다. 콘텐츠. 파일 문서 항목🎜
🎜예를 들어🎜🎜🎜PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.🎜🎜주로 변환하는 경우에는 너무 많이 소개하지 않겠습니다. 🎜

2. 이 세 가지 형식을 판단하는 방법

🎜1. Base64 문자열인지 확인🎜rrreee🎜2. Blob 개체인지 확인합니다🎜rrreee🎜 3. 파일 객체인지 확인🎜rrreee🎜🎜PS:🎜
Blob과 File 모두 해당 데이터 유형인지 확인하기 위해 instanceof를 사용합니다.
한 가지 주목할 점은 File 객체가 다음과 같다는 것입니다. File은 Blob에서 상속되므로 Blob 개체이므로 판단 논리를 직접 정의할 수 있습니다🎜🎜🎜3. 형식 간 변환🎜🎜🎜🎜1. Base64에서 File🎜🎜rrreee
    🎜두 개의 매개변수를 전달해야 합니다. , 첫 번째는 데이터이고 두 번째는 사용자 정의 파일 이름 문자열 🎜🎜🎜🎜2입니다. Base64를 Blob 🎜🎜rrreee
      🎜으로 변환하는 것은 마지막을 제외하면 기본적으로 파일로 변환하는 것과 동일합니다. 문장 return은 다릅니다🎜 🎜🎜🎜3. Blob to File🎜🎜rrreee
        🎜🎜여기와 Base64 to File은 실제로 새 파일( ) 메소드는 위의 메소드에 두 개의 매개변수가 전달됩니다. 여기서는 크게 중요하지 않은 매개변수로 메소드를 제공하므로 직접 사용할 수 있습니다. 🎜🎜🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜🎜

위 내용은 PHP에서 Base64, Blob, File의 상호 변환 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제