javascript - XmlHttpRequest 上传进度事件仅触发一次且为时过早

标签 javascript file-upload upload xmlhttprequest

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

我遇到的问题是进度事件通常几乎立即触发(即使 block 大小为 5MB),“已加载”值等于 block 的大小。当然, block 上传可能需要 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 - XmlHttpRequest 上传进度事件仅触发一次且为时过早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735677/

相关文章:

javascript - 如何在子 React 组件中调用父方法?

javascript - 仅当表单提交后从另一个路由重定向时,才在路由上渲染组件

java - Selenium WebDriver - 无法使用 AutoIT 上传文件

android - Youtube 上传视频 Android

javascript - 搜索元素,包括根和后代

javascript - 使用 JavaScript/jQuery 永久覆盖 CSS

javascript - event.preventDefault 和 stopPropagation 在拖/放事件中未按预期工作

php - js : send base64 string to php server page

php - jQuery + php 文件上传。传递多个参数

laravel - 如何使用 Laravel 上传图片?