私は、ユーザーが写真を(ブラウザ内で)編集してアップロードできるウェブサイトで作業しています。ブラウザで画像を編集するには、base64で画像を扱うJavaScriptライブラリをいくつか使用します。その結果、サーバーに画像をPOSTするには、ファイル入力のある単純なフォームを使用することはできません。隠された入力の値は、編集された画像のbase64文字列に設定され、それはPOSTされます。以下の短い例を参照してください。投稿base64データJavaScript/jQuery
明らかに、これは非常にストリップダウンされたが、それは私がに実行している問題を含んでいます。 3MBのアニメーションGIFをポストすると、6.5分かかりました。その間、私のコンピュータはほぼ完全に凍結/無反応でした。 (ただし、これはが完全にの小さな画像の場合)
OS /ブラウザの問題(Ubuntuの最新のGoogle Chrome)の可能性がありますが、私はそれを疑っています。そのファイルをフォームの中に入れ、base64形式のデータを削除すると(つまり、ファイルの標準的なポスティング)、それは約1秒で実行されます。
6.5分と1秒を比較します。私は間違ったことをしなければならない。私はここで間違って何をしていますか?代わりに私は何をしなければなりませんか?私はかなりWeb開発の新しいので、私は少し暗いです。私はbase64には1.3倍のサイズの増加があると認識していますが、ここでのアップロード時間は1.3倍ではないことは明らかです。私はちょっとしたコンソールをやりました。ログと
var base64 = reader.result;
は約1秒かかります。だからボトルネックはそこにあるとは思わない。ボトルネックはアップロードする必要があります。しかし、なぜ?なぜフォームファイルを入力したのですかは、form64よりもはるかに高速です。
私は長い間巻き込まれた投稿をお詫び申し上げますが、私はウェブ開発の初心者です。本当には私の問題を理解していないので、すべての情報を取得するのは簡潔です。
おかげ
バックエンドサーバーとは何ですか? – arb
-A data urlはbase64と同じではありません...最近のデータURLは、ほとんどのUUIDであり、全Base64本体+メタデータではありません。そのUUIDをアップロードすることは役に立たない.-あなたがJSでbase64を実際に使っているのなら、['btoa()'](https://developer.mozilla.org/en-US/docs/Web/API/window.btoa)を使う。 – Rudie
私のバックエンドサーバーですか?それはPHPです。 (それはあなたが求めているのですか?) –