2

現在、この配列には多くのデータURIが含まれています。私はこれを次のようなコードで以前に設定しました:

dataArray = [];
dataArray.push({name : file.name, value : this.result});

データURIでいくつかのことを行った後、ユーザーが最後にアップロードボタンを押したときにアップロードしたいので、次のようにデータURIをPHPファイルに渡します。

$.each(dataArray, function(index, file) {   

    $.post('upload.php', dataArray[index], function(data) {

そして、内部でいくつかの関数を実行して、ローディングバーなどを表示します。

PHPファイル(upload.php)で、何をすべきかわかりません。各データURIはPHPファイルに個別に投稿されますが、PHPでデータURIを処理するにはどうすればよいですか?通常、データURI自体を取得するために$ _POSTを実行しますが、これをサーバー上のフォルダーにプッシュする方法がわかりません。データURIを通常のファイルとして扱い、$ _ FILESを使用できますか?これまでのところ、私はあまり成功していません。

4

1 に答える 1

3

データPOSTは次のようになります。

$name = $_POST['name'];
$value = $_POST['value'];

これらの変数の値に触れる前に、まずすべての変数をサニタイズし、その$value変数が実際に有効な画像ファイルであることを確認する必要があります。これを行うには、data-URIを実際の画像に変換する必要があります。

そのためには、データの構造を調べる必要があります-URI:

data:[<MIME-type>][;charset=<encoding>][;base64],<data>

したがって、それを解析するには、データURIからこの情報を抽出する正規表現を記述し、base64でエンコードされた画像データをデコードし、最後にMIMEタイプを使用して画像ファイルとして解析する必要があります。これが失敗すると、イメージが破損します。そうでない場合は、サーバーに保存できます。

複雑に聞こえるかもしれませんが、実装に非常に時間がかかるとは思えません。

于 2012-08-05T22:06:52.280 に答える