新聞中心
本文操作環(huán)境:windows7系統(tǒng)、php7.1版、DELL G3電腦

php blob 怎么轉(zhuǎn)base64?
在PHP中將本地圖像Blob轉(zhuǎn)換為base64
具體問題描述:
我正在為內(nèi)部工具編寫(HTML)表單.用戶可以填寫有關(guān)問題的數(shù)據(jù)并附加屏幕截圖.然后將此表單通過Ajax提交給PHPMailer進行發(fā)送.問題出在截圖上.由于系統(tǒng)限制,我無法讓用戶實際將文件上傳到服務(wù)器.
當(dāng)前,我正在使用HTML5文件閱讀器來選擇文件.然后,我將圖像Blob轉(zhuǎn)換為base64,并將其發(fā)送到PHPMailer,以轉(zhuǎn)換為附件.這實際上工作得很好.但是,我遇到了文件大小問題.具體來說就是1000px x 1000px(402KB)的測試圖像.產(chǎn)生的base64字符串超過一百萬個字符,并且請求返回 413(請求實體太大).
我知道base64并不是傳輸大型圖像的有效方法,并且我已經(jīng)看到有關(guān)從數(shù)據(jù)庫檢索/轉(zhuǎn)換圖像斑點的各種文章.我找不到的是有關(guān)檢索本地圖像Blob并將其轉(zhuǎn)換為base64的信息.
我的圖片Blob網(wǎng)址如下所示: blob: http://example.com/18960927-e220-4417-93a4-edb608e5b8b3
是否有可能在PHP中獲取此本地圖像數(shù)據(jù),然后將其轉(zhuǎn)換為base64?
我不能發(fā)布很多源代碼,但是,以下內(nèi)容將使您了解我如何使用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 = "No files selected!
";
} 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 + "
" + files[i].size + " bytes";
li.appendChild(info);
}
}
}
}解決方案:
您可以將File對象的POST php
fetch("/path/to/server", {
method: "POST"
body: files[i]
})
.then(response => console.log(response.ok))
.catch(err => console.error(err)); 新聞標(biāo)題:php blob 怎么轉(zhuǎn)base64
標(biāo)題路徑:http://m.fisionsoft.com.cn/article/cccgjoo.html


咨詢
建站咨詢
