Maison >développement back-end >Problème PHP >Comment convertir un blob php en base64
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.
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 + ' is too big. Please resize it and try again.'); } 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!