【问题标题】:XmlHttpRequest upload progress event firng only once and too earlyXmlHttpRequest 上传进度事件只触发一次而且太早了
【发布时间】:2012-09-25 23:39:21
【问题描述】:

我正在尝试上传一段文件(使用 HTML5 文件 API、切片和 XmlHttpRequest2),并向用户报告进度。

我遇到的问题是进度事件通常几乎立即触发(即使块大小为 5MB),“加载”值等于块的大小。当然,上传块可能需要 30 秒,在此期间用户没有反馈。

下面的代码是否有人可以提供帮助?我几乎从字面上撕了我的头发,但找不到遇到同样问题的人!...

var startPosition = (partNumber - 1) * PART_SIZE;
var blob;

if (typeof fileUpload.File.slice != "undefined")
{
    blob = fileUpload.File.slice(startPosition, startPosition + contentLength);
}
else
{
    if (typeof fileUpload.File.webkitSlice != "undefined")
        blob = fileUpload.File.webkitSlice(startPosition, startPosition + contentLength);

    if (typeof fileUpload.File.mozSlice != "undefined")
        blob = fileUpload.File.mozSlice(startPosition, startPosition + contentLength);
}

fileUpload.PartNumber = partNumber;



        var xhr = new XMLHttpRequest();            

        // Add event listener for progress
        xhr.upload.onprogress = function (event) 
        {
            log.debug("progress " + event.loaded);

            if (event.lengthComputable)
                UpdateProgress(fileUpload, event.loaded);
        };            

        xhr.open("PUT", url, true);

        xhr.setRequestHeader('authorization', result);

        // Make the request an HTTP PUT
        log.debug('Sending PUT request to ' + url);
        xhr.send(blob);

【问题讨论】:

  • 忘了说我在谷歌浏览器中看到了这个

标签: javascript file-upload upload xmlhttprequest


【解决方案1】:

答案 - 代码没有任何问题。我的电脑出了点问题,它可以在不同计算机上的同一浏览器中正常运行。

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2013-09-04
    • 2016-12-21
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多