首頁  >  文章  >  後端開發  >  php blob 怎麼轉base64

php blob 怎麼轉base64

藏色散人
藏色散人原創
2021-11-16 09:28:352395瀏覽

php blob轉base64的方法:1、開啟對應的程式碼檔案;2、修改PHP內容為「fetch("/path/to/server", {method: "POST"body: files[i ]})...」即可。

php blob 怎麼轉base64

本文操作環境:windows7系統、PHP7.1版、DELL G3電腦

php blob 怎麼轉base64?

在PHP中將本地圖像Blob轉換為base64

具體問題描述:

我正在為內部工具編寫(HTML)表單.用戶可以填寫有關問題的數據並附加螢幕截圖.然後將此表單透過Ajax提交給PHPMailer進行發送.問題出在截圖上.由於系統限制,我無法讓用戶實際將文件上傳到伺服器.

當前,我正在使用HTML5文件閱讀器來選擇文件.然後,我將圖像Blob轉換為base64,並將其發送到PHPMailer,以轉換為附件.這實際上工作得很好.但是,我遇到了文件大小問題。具體來說就是1000px x 1000px(402KB)的測試圖像.產生的base64字符串超過一百萬個字符,並且請求返回413(請求實體太大).

我知道base64並不是傳輸大型圖像的有效方法,並且我已經看到有關從資料庫檢索/轉換圖像斑點的各種文章.我找不到的是有關檢索本地圖像Blob並將其轉換為base64的信息.

我的圖片Blob網址如下所示: blob: http://example.com/18960927-e220-4417-93a4-edb608e5b8b3

#是否有可能在PHP中獲取此本地圖像數據,然後將其轉換為base64?

我不能發布很多原始程式碼,但是,以下內容將使您了解我如何使用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);
        }
    }
  }
}

解決方案:

您可以將File物件的POST php

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

推薦學習:《PHP影片教學

以上是php blob 怎麼轉base64的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn