Maison  >  Article  >  développement back-end  >  Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

藏色散人
藏色散人avant
2023-03-16 15:19:413308parcourir

Cet article vous apporte des connaissances pertinentes sur php. Il parle principalement de la façon dont Base64, Blob et File sont convertis les uns aux autres ? Les amis intéressés peuvent jeter un œil ci-dessous. J'espère que cela sera utile à tout le monde.

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

Avant-propos

Lors de la prise de photos, j'ai rencontré une situation où je devais convertir le format, alors je l'ai enregistré et partagé.

Texte

1. Introduction de base au format

  • Base64

Base64 est l'une des méthodes de codage les plus courantes pour transmettre du bytecode 8 bits sur Internet. . Une méthode de représentation de données binaires avec des caractères imprimables Entrée de document Base64

Par exemple

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

  • Blob

Blob représente un fichier de données original immuable. comme objet. Ses données peuvent être lues au format texte ou binaire, ou converties en ReadableStream pour les opérations sur les données. Entrée de document BlobBlob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream来用于数据操作。 Blob文档入口

举个例子

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

  • File

文件(File)接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。 File文档入口
举个例子

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

就不过多介绍了,主要来讲如果转换。

二、如何判断这三种格式

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()

Par exemple

Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP

🎜🎜file🎜🎜🎜🎜file (🎜 file 🎜) Interface fournit des informations sur les fichiers, et permettre à l'interface javourée dans les pages Web d'accès à son contenu. Entrée du document de fichier🎜
🎜Par exemple🎜🎜🎜Parlons des méthodes de conversion mutuelle de Base64, Blob et File en PHP🎜🎜Je n'en présenterai pas trop, principalement si vous vous convertissez. 🎜

2. Comment juger ces trois formats

🎜1 Déterminez s'il s'agit d'une chaîne Base64🎜rrreee🎜2. Déterminez s'il s'agit d'un objet Blob🎜rrreee🎜. 3. Déterminez s'il s'agit d'un objet File🎜rrreee🎜🎜PS :🎜
Blob et File utilisent instanceof pour déterminer s'il s'agit du type de données correspondant.
Une chose à noter est que l'objet File est également un objet Blob, car File hérite de Blob, donc la logique de jugement peut être définie par vous-même🎜🎜🎜3 Conversion entre les formats🎜🎜🎜🎜1 en Base64 vers File🎜🎜rrreee
    🎜Vous devez transmettre deux paramètres. , le premier est des données, le second est une chaîne de nom de fichier personnalisée 🎜🎜🎜🎜2. La conversion de Base64 en Blob 🎜🎜rrreee
      🎜 est fondamentalement la même que la conversion de Fichier, à l'exception de la dernière phrase. retour qui est différent🎜 🎜🎜🎜3. Blob vers Fichier🎜🎜rrreee
        🎜🎜Ici et Base64 vers Fichier sont en fait le nouveau Fichier() Méthode , la méthode ci-dessus Les deux paramètres sont passés. Ils sont corrigés ici. Ce paramètre n'est pas très important. Vous pouvez modifier la fonction par vous-même. Les méthodes ont été fournies, vous pouvez donc l'utiliser directement. 🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer