7

我正在使用 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.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

4

0 回答 0