Maison > développement back-end > Problème PHP > Comment convertir un blob php en base64

Comment convertir un blob php en base64

藏色散人
Libérer: 2023-03-13 20:32:01
original
2466 Les gens l'ont consulté

Comment convertir un blob php en base64 : 1. Ouvrez le fichier de code correspondant ; 2. Modifiez le contenu PHP en "fetch("/path/to/server", {method: "POST" body: files[i]} ). .." C'est ça.

Comment convertir un blob php en base64

L'environnement d'exploitation de cet article : système Windows7, PHP version 7.1, ordinateur DELL G3

Comment convertir un blob php en base64 ?

Convertir un blob d'image local en base64 en PHP

Description détaillée du problème :

J'écris un formulaire (HTML) pour un outil interne. L'utilisateur peut remplir les données sur la question et joindre une capture d'écran. Ce formulaire est ensuite soumis à PHPMailer pour envoi. En raison des limitations du système, je ne peux pas laisser l'utilisateur télécharger le fichier sur le serveur.

Actuellement, j'utilise un lecteur de fichier HTML5 pour sélectionner le fichier, puis convertir l'image blob en base64 et l'envoyer à PHPMailer pour qu'il soit converti. dans une pièce jointe. Cela fonctionne très bien. Cependant, je rencontre des problèmes de taille de fichier. Plus précisément, une image de test de 1 000 px x 1 000 px (402 Ko) contient plus d'un million de caractères et la requête renvoie 413 (entité de requête). Trop gros).

Je sais que base64 n'est pas un moyen efficace de transférer des images volumineuses, et j'ai vu divers articles sur la récupération/conversion de blobs d'images à partir d'une base de données. Ce que je ne trouve pas, ce sont des informations sur la récupération de blobs d'images locaux. et les convertir en base64

L'URL de mon image blob ressemble à ceci : blob : http://example.com/18960927-e220-4417-93a4-edb608e5b8b3

Est-il possible d'obtenir ces données d'image locales en PHP, puis le convertir en base64 ?

Je ne peux pas publier beaucoup de code source, cependant, ce qui suit vous donnera une idée de la façon dont j'utilise FileReader

window.onload=function(){
window.URL = window.URL || window.webkitURL;
var fileSelect = document.getElementById("fileSelect"),
    fileElem = document.getElementById("fileElem"),
    fileList = document.getElementById("fileList");
fileSelect.addEventListener("click", function (e) {
  if (fileElem) {
    fileElem.click();
  }
  e.preventDefault(); // prevent navigation to "#"
}, false);
}
function handleFiles(files) {
  if (!files.length) {
    fileList.innerHTML = "<p>No files selected!</p>";
  } else {
    fileList.innerHTML = "";
    var list = document.createElement("ul");
    fileList.appendChild(list);
    for (var i = 0; i < files.length; i++) {
        if(files[i].size > 1000000) {
            alert(files[i].name + &#39; is too big. Please resize it and try again.&#39;);
        } else {
        var li = document.createElement("li");
      list.appendChild(li);
      var img = document.createElement("img");
      img.src = window.URL.createObjectURL(files[i]);
      img.height = 60;
      img.setAttribute("class", "shotzPrev");
      img.onload = function() {
        window.URL.revokeObjectURL(this.src);
      }
      li.appendChild(img);
      var info = document.createElement("span");
      info.innerHTML = files[i].name + "<br>" + files[i].size + " bytes";
      li.appendChild(info);
        }
    }
  }
}
Copier après la connexion

Solution :

Vous pouvez POST l'objet File php

fetch("/path/to/server", {
  method: "POST"
  body: files[i]
})
.then(response => console.log(response.ok))
.catch(err => console.error(err));
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal