Home > Article > Backend Development > How to convert php blob to base64
How to convert php blob to base64: 1. Open the corresponding code file; 2. Modify the PHP content to "fetch("/path/to/server", {method: "POST" body: files[i ]})..." That's it.
The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer
How to convert php blob to base64?
Convert local image blob to base64 in PHP
Specific problem description:
I am writing a (HTML) form for an internal tool. Users can fill in the relevant questions data and attach a screenshot. This form is then submitted via Ajax to PHPMailer for sending. The problem is with the screenshot. Due to system limitations, I cannot let the user actually upload the file to the server.
Currently, I am using HTML5 file reader to select the file. I then converted the image blob to base64 and sent it to PHPMailer to be converted to an attachment. This actually worked fine. However, I ran into file size issues. Specifically That's a test image of 1000px x 1000px (402KB). The resulting base64 string is over a million characters, and the request returns 413 (Request entity too large).
I know base64 is not efficient for transferring large images method, and I've seen various articles about retrieving/converting image blobs from the database. What I can't find is information about retrieving local image blobs and converting them to base64.
My Image Blob The URL looks like this: blob: http://example.com/18960927-e220-4417-93a4-edb608e5b8b3
Is it possible to get this local image data in PHP and then convert it to base64?
I can't post a lot of source code, however, the following will give you an idea of how I use 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:
You can POST a File object to php
fetch("/path/to/server", { method: "POST" body: files[i] }) .then(response => console.log(response.ok)) .catch(err => console.error(err));
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of How to convert php blob to base64. For more information, please follow other related articles on the PHP Chinese website!