ここで提案されているように: https://gist.github.com/HenrikJoreteg/2502497jQuery.ajax()
、ファイルのアップロードに onprogress 機能を追加しようとしています。アップロードは正常に動作し、onprogress イベントは発生していますが、期待どおりではありませんでした。ある時間間隔で繰り返し発生するのではなく、アップロードが完了したときに 1 回だけ発生しています。進行中の更新の頻度を指定する方法はありますか? それとも、できないことをしようとしているのですか?これが私のコードです:
$.ajax(
{
async: true,
contentType: file.type,
data: file,
dataType: 'xml',
processData: false,
success: function(xml)
{
// Do stuff with the returned xml
},
type: 'post',
url: '/fileuploader/' + file.name,
xhrFields:
{
onprogress: function(progress)
{
var percentage = Math.floor((progress.total / progress.totalSize) * 100);
console.log('progress', percentage);
if (percentage === 100)
{
console.log('DONE!');
}
}
}
});
さて、数年経ちました。これを再検討し、GetFreeの回答を使用して、コードを次のように更新しました。
$('#file_input').change(function()
{
var file = this.files[0];
$('#upload_button').click(funtion(e)
{
req = new XMLHttpRequest();
req.upload.addEventListener('progress', updateProgress, false);
req.addEventListener('load', transferComplete, false);
var url = 'https://my.url';
req.open('POST', url, true);
req.setRequestHeader('Content-Type', myFileType);
req.setRequestHeader('Content-Length', myFileLength);
req.send(file);
});
);
function updateProgress(e)
{
var percent = Math.floor(e.loaded / e.total * 100);
console.log("percent = " + percent);
}
function transferComplete(e)
{
console.log("transfer complete");
}
GetFree の投稿を承認済みの回答としてマークしました。遅れて申し訳ありません。