私は ajax 経由でファイルをアップロードし、アップロード後に画像を処理しています。Firefox で ajax 経由で画像ファイルをアップロードしようとしたとき、アップロード パーセントが 100% でファイルが正常にアップロードされたときに、xhr 進行状況イベントが進行機能をトリガーしませんでした。
アップロードが 100% 進行すると Google chrome がトリガーされますが、firefox はトリガーされません。
私のアップロードスクリプトを簡単に:
$("#uploadbutton").click(function(){
var xhr=new XMLHttpRequest()
,fd=new FormData();
xhr.upload.addEventListener("loadstart", uploadStart, false);
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.open("POST", mainurl+"ajaxupload.php");
$.each($("#upload_input").files,function(i,file){
fd.append("files_"+i,file);
});
xhr.send(fd);
});
function uploadProgress(event){
var percentComplete = Math.round(event.loaded * 100 / event.total);
console.log("pecent ",percentComplete);
}
アップロードの開始時、uploadProgress 関数は 1 回実行されますが (ほとんどの場合、アップロード パーセンテージ 80% の場合)、アップロードの終了時にはトリガーされません。