JSON で応答するサーバーに (複数の) ファイルを送信するための HTML アップロード ボタンがあります。その応答に基づいて、アプリケーション フローが続行されます。
ここで、(サーバーの応答に応じて) 残りのコードをテストするために、ファイルのアップロードをシミュレートして、リロードのたびに新しいファイルを手動で選択してアップロードする必要がないようにします。
以下は、アップロード方法の簡略版です。
uploadToServer: function (file) {
var self = this,
data = new FormData(),
xhr = new XMLHttpRequest();
// When the request has successfully completed.
xhr.onload = function () {
var response = $.parseJSON(this.responseText);
var photo = new App.Models.Photo({
filename: response.filename,
name: response.uuid
});
var photoView = new App.Views.Photo({ model: photo });
$('.photos').append(photoView.render().el);
};
// Send to server, where we can then access it with $_FILES['file].
data.append('file', file);
xhr.open('POST', this.url);
xhr.send(data);
}
uploadToServer
パラメータfile
はFileListのFileオブジェクトです。ご覧のとおり、私のサーバーは 内のファイルを待機しています。$_FILES['file']
が に渡される実際のファイル オブジェクトをシミュレートできれば素晴らしいと思います。なぜなら、やuploadToServer
などの既存のイベントが利用可能であることを心配する必要がないからです。xhr.onload
xhr.onprogress
それが不可能な場合は、カスタムuploadToServer
メソッドを作成して、通常の AJAX 要求と偽の応答をサーバーに送信できます。しかし、どうすればイベント (など) からその AJAX リクエストxhr.onload
にコードを使用してバインドできますか?xhr.onprogress