2012-04-12 11 views
3

PHPスクリプトのXMLHttpRequestからBLOBを取得する方法を理解できません。 私はJSでこのようなコードを持っている:サーバーサイド(PHP)でXMLHttpRequestを使用してブラウザから送信されたデータを受け取る方法は?

var req = new XMLHttpRequest();   // create instance 

var file = document.getElementById('file').files[0];  // get File Object from <input type=file />. It is picture 

req.open("POST", “uploader.php”, true); // make request 

req.setRequestHeader("Content-Type", file.type); set request headers 
req.setRequestHeader("Content-Length", file.size); 

req.send(file);     // send request with file-blob 

if (req.readyState == 4 && req.status == 200) { 
     alert("result = " + req.responseText); 
} 

は、私は、サーバーにBLOBを送信する方法を理解しますが、そこにそれを得るためにどこかから理解していません。 $_POST$_GET$_FILESグローバルアレイを使用しようとしましたが、ファイルがありません。私も、このようなURLにfileを追加しようとしました:

req.open("POST", “uploader.php?file=” + file, true); 

それはどちらかの解決策ではありません。

答えを読むここでは、php://inputを使用して生のバイナリデータを取得できることがわかりました。私は試してみました。はい、生データがあります。この解決策を何度も調べようとしています。しかし、これが唯一の方法であるか尋ねたいですか?そうでない場合、他は何ですか?そして、どれが一番正しい?

また、("Content-Length", file.size)というヘッダーを設定すると、console.logにエラーが表示され、「安全でないヘッダーを設定することを拒否しました」というメッセージが表示されます。このヘッダーは必要ないのですか?以下のポスト

答えて

1

チェックアウト:

image upload with ajax and php

は、あなたが本当にXmlHttpRequestの経由ブロブをアップロードすることはできませんが、あなたは隠されたアイフレームとの感触のようなAJAXを作成することができます。

JQueryのプラグインがあると思われます。

こちらがお役に立てば幸いです。

1

はあなたのヘッダーのためにこれを使用してみてください:

req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
関連する問題