XMLHttprequestでファイルをアップロードしています。 upload.php に私は、ファイルを読んで、この方法サーバー側ではXMLHttprequestを使用したファイルのアップロード - multipart/form-dataに境界がありません
var upload = function(file) {
// Create form data
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
// Open
xhr.open('POST', this.options.action);
// Set headers
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("X-File-Name", file.fileName);
xhr.setRequestHeader("X-File-Size", file.fileSize);
xhr.setRequestHeader("X-File-Type", file.type);
// Send
xhr.send(formData);
}
:
file_put_contents($filename, (file_get_contents('php://input')));
すべてはことを除いて、正常に動作し ここでJSの関数であるが、それはファイルをアップロード私はPHPを得る警告:
Missing boundary in multipart/form-data POST data in Unknown on line 0
。
この行を削除すると: xhr.setRequestHeader("Content-Type", "multipart/form-data");
警告が消えます。
ここで問題になるのは何ですか?
コンテンツタイプとして 'application/x-www-form-urlencoded'を試してみてください。または、これを省略してください。これは、ajaxリクエストによって送信されるデフォルトのコンテンツタイプであるためです。 –
これは動作しますが、大容量のファイル(5〜600 KBでも)に対しては、ファイルを「テキスト」形式で送信する必要があるため、ブラウザはフリーズします。私は 'multipart/form data'を使う必要があります。 –
申し訳ありませんが、ファイルアップロードのビットを見落としました(どのように分かりません)が、[これはあなたのquestonに答えるかもしれないと思う](http://stackoverflow.com/questions/5933949/how-to-send-multipart-form-具体的には、次のようになります。xhr.setRequestHeader( "content-type"、 "multipart/form-data; charset = utf-8; boundary =" + Math.random(data-form-content-by-ajax-no-jquery) ).toString()。substr(2)); 'トリックを行う必要があります –