問題描述
我正在嘗試使用 XMLHttpRequest 發送文件,它正在工作,但我的進度監視器不工作.
I'm trying to send a file using XMLHttpRequest, which is working, but my progress monitor is not working.
我嘗試上傳一個 700KB 的文件和一個 3MB 的文件,但遇到了同樣的問題."progress" 事件觸發一次,并且只觸發一次,它表示 event.loaded 和 event.total 始終相同.上傳需要足夠的時間,但事件只觸發一次.
I've tried uploading a 700KB file and a 3MB file and I get the same issue. the "progress" event fires once, and only once, and it says that the event.loaded and event.total is always the same. It takes an adequate amount of time to upload but the event only fires once.
在 chrome 和 firefox 中測試過同樣的問題.以下是事件的控制臺日志
Tested in chrome and firefox with the same issues. Below is a console log of the event
XMLHttpRequestProgressEvent {totalSize: 764277, position: 764277, total: 764277, loaded: 764277, lengthComputable: true…}
bubbles: false
cancelBubble: false
cancelable: true
clipboardData: undefined
currentTarget: XMLHttpRequestUpload
defaultPrevented: false
eventPhase: 0
lengthComputable: true
loaded: 764277
position: 764277
returnValue: true
srcElement: XMLHttpRequestUpload
target: XMLHttpRequestUpload
timeStamp: 1390945794935
total: 764277
totalSize: 764277
type: "progress"
__proto__: XMLHttpRequestProgressEvent
這是我的源代碼 javascript
And here's my source javascript
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function(e) {
console.log(e);
}, false);
xhr.onload = function () {
if (xhr.status === 200) {
console.log('done');
}
else if (xhr.status == 403) {
console.log('forbidden');
}
else {
console.log('error');
}
};
xhr.open("POST", '/upload.php');
xhr.send(formData);
推薦答案
好吧,我也遇到了這個問題,我真的很驚訝為什么在網上花了很多時間后它仍然不起作用.有趣或令人沮喪的是,它確實可以在具有幾乎相同設置的其他機器上完美運行.
Alright, I had this issue too and was really suprised why it did not work after spending many hours on this with many examples from the net. Funny or depressing thing was, that it did work perfectly on other machines with almost the same setup.
我發現我的 防病毒程序
導致了這個問題.例如,如果您使用 AVG
,則有一個稱為 LinkScanner
的功能.如果這是 enabled
,它將不會正確調用 XMLHttpRequest.upload.progress
事件.我確信其他防病毒程序中還有其他基于 Web 的功能會影響此功能.
I found out that my antivirus program
was causing this issue. For example if you use AVG
, there is a feature called LinkScanner
. If this is enabled
it will not call the XMLHttpRequest.upload.progress
event properly. I am sure there are other web based features in other antivirus programs that can influence this functionality.
希望這可以幫助面臨同樣問題并花費數小時痛苦的其他人......
Hope this might help others who face the same issue and spent hours of pain...
這篇關于XMLHttpRequest 上傳進度未正確觸發的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!