PHP BLOBをbase64に変換する方法

藏色散人
リリース: 2023-03-13 20:32:01
オリジナル
2405 人が閲覧しました

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 の変換方法to Base64?

PHP でローカル イメージ BLOB を Base64 に変換する

具体的な問題の説明:

内部ツール用の (HTML) フォームを作成しています。関連する質問データを入力し、スクリーンショットを添付できます。このフォームは、送信のために Ajax 経由で PHPMailer に送信されます。問題はスクリーンショットです。システムの制限により、ユーザーが実際にファイルをサーバーにアップロードすることはできません。

現在、HTML5 ファイル リーダーを使用してファイルを選択しています。次に、画像 BLOB を Base64 に変換し、添付ファイルに変換するために PHPMailer に送信しました。これは実際には問題なく動作しました。ただし、ファイル サイズが限界に達しました。具体的には、1000 ピクセル x 1000 ピクセル (402 KB) のテスト画像です。結果の Base64 文字列は 100 万文字を超え、リクエストは 413 (リクエスト エンティティが大きすぎます) を返します。

Base64 が効率的でないことはわかっています。大きな画像を転送する方法で、データベースから画像 BLOB を取得/変換することに関するさまざまな記事を見てきましたが、ローカルの画像 BLOB を取得して Base64 に変換することに関する情報が見つかりません。

My Image 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);
        }
    }
  }
}
ログイン後にコピー

解決策:

POST できます。 File オブジェクトを 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート