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

Comment convertir un blob php en base64

藏色散人
藏色散人original
2021-11-16 09:28:352447parcourir

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);
        }
    }
  }
}

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

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:
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