我通過ajax請求上傳文件,只需將它們分割成塊即可。Ajax文件上傳進度事件沒有觸發
該問題的進展情況,火狐出於某種原因想不火這種情況下,這裏是我的代碼(最不必要的代碼被刪除)
//slice file
if(file.mozSlice){
chunk = file.mozSlice(startByte, endByte);
}else if(file.slice){
chunk = file.slice(startByte, endByte);
}else{
chunk = file;
isLast = true;
}
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', function(e){
console.log('progress');
}, false);
xhr.upload.addEventListener('error', function(e){
console.log("upload error!");
});
xhr.onreadystatechange = function(e){
if(this.readyState == 4 && this.status == 200){
//this chunk has bee uploaded, proceed with the next one...
}
}
xhr.open('POST', "", true);
xhr.setRequestHeader('Cache-Control', 'no-cache');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');//header
xhr.setRequestHeader('Content-Type', 'application/octet-stream');//generic stream header
xhr.send(chunk);
我敢肯定,我的天堂」由於Chrome工作沒有任何問題,所以不會出現任何重大錯誤,所以必須有一些與Firefox相關的問題。
也許它完成得這麼快從未有任何進展報告? – Halcyon
不,我沒有嘗試使用大文件,我可以看到正在上傳的塊,有時需要大約3秒才能上傳塊。 – Linas
您在此處列出的代碼看起來是正確的,我自己也沒有在Firefox中看到任何進度事件通知問題。所以,您可能會遺漏一些導致客戶端代碼出現問題的問題。沒有一個實例,可能很難確定問題的確切來源。 –