PHP BLOB を Base64 に変換する方法: 1. 対応するコード ファイルを開きます; 2. PHP コンテンツを "fetch("/path/to/server", {method: "POST" body: files) に変更します。 [i ]})...」それだけです。
この記事の動作環境: 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 + ' 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); } } } }
解決策:
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 サイトの他の関連記事を参照してください。