Ajax XHR进度事件到达得太快
我正在使用html表单和ajax直接上传到S3。工作正常,文件上传。我的问题是进步事件来得太快。像所有这些一样,高达99.9%的用户在上传开始时立即被解雇Ajax XHR进度事件到达得太快,ajax,amazon-s3,xmlhttprequest,Ajax,Amazon S3,Xmlhttprequest,我正在使用html表单和ajax直接上传到S3。工作正常,文件上传。我的问题是进步事件来得太快。像所有这些一样,高达99.9%的用户在上传开始时立即被解雇 var fd = new FormData(); // put data from the form to FormData object $.each( $('#upload-form').serializeArray(), function(i, field) { fd.append(field.name, field
var fd = new FormData();
// put data from the form to FormData object
$.each( $('#upload-form').serializeArray(), function(i, field) {
fd.append(field.name, field.value);
});
// add selected filename to the form data
var file = document.getElementById('path-to-file').files[0];
fd.append("file", file);
var xhr = getXmlHttpRequest(); // cross-browser implementation
xhr.upload.addEventListener("progress", function(e) {
console.log(e.loaded + "/" + e.total);
});
xhr.open('POST', 'http://mybucket.s3.amazonaws.com/', true);
xhr.send(fd);
我也试过这种方法
xhr.upload.onprogress = function(evt)
{
if (evt.lengthComputable)
{
console.log(e.loaded + "/" + e.total);
}
};
浏览器日志如下所示:
[22:54:47.245] POST http://mybucket.s3.amazonaws.com/
[22:54:47.287] 359865/5680475
[22:54:47.330] 1408441/5680475
[22:54:47.408] 2751929/5680475
[22:54:47.449] 3964345/5680475
[22:54:47.509] 5668281/5680475
然后上传一个5M文件所需的时间就没有了
如果浏览器信息是相关的,我有Firefox 20.0.1,它在其他浏览器中做什么?嗯,当从发送端通过套接字发送字节时,该事件就会触发(这通常很快);而不是当服务器实际接收到这些字节时。这就是你看到它的原因。@monsur在Chrome 26.0.1410.64 mI中的相同行为我也有同样的问题。不管文件有多大,它似乎直接达到100%。很高兴看到这个问题的答案。