>  기사  >  백엔드 개발  >  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 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php blob을 base64로 변환하는 방법

PHP에서 로컬 이미지 blob을 base64로 변환

자세한 문제 설명 :

내부 도구용 (HTML) 양식을 작성 중입니다. 사용자는 질문에 대한 데이터를 입력하고 스크린샷을 첨부할 수 있습니다. 그러면 이 양식이 전송을 위해 Ajax를 통해 PHPMailer에 제출됩니다. 시스템 제한으로 인해 사용자가 실제로 파일을 서버에 업로드하도록 할 수 없습니다.

현재 HTML5 파일 리더를 사용하여 파일을 선택한 다음 이미지 blob을 base64로 변환하고 변환하도록 보냅니다. 실제로는 잘 작동합니다. 그러나 파일 크기 문제가 있습니다. 특히 1000px x 1000px(402KB) 테스트 이미지 결과는 100만자를 초과하며 요청은 413(요청 엔터티)을 반환합니다.

나는 base64가 큰 이미지를 전송하는 효율적인 방법이 아니라는 것을 알고 있으며 데이터베이스에서 이미지 blob 검색/변환에 대한 다양한 기사를 본 적이 있지만 찾을 수 없는 것은 로컬 이미지 blob 검색에 대한 정보입니다.

내 이미지 blob URL은 다음과 같습니다: 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);
        }
    }
  }
}

해결책:

파일 개체 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으로 문의하세요.