upload - XMLHttpRequest upload.onprogress 立即完成

标签 upload xmlhttprequest

我正在尝试使用 HTML5 制作一个带有进度表的文件 uploader 。这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <title>Test Progress Meter</title>
    <script type="text/javascript">

        function submitFile(){
            var blobOrFile = document.getElementById("fileInput").files[0];

            var xhr = new XMLHttpRequest();

            xhr.onload = function(e) {
                alert("finished!");
            };

            xhr.upload.onprogress = function(e) {
                if (e.lengthComputable) {
                    document.getElementById("statusBox").innerHTML = e.loaded + " / " + e.total;
                }
            };

            xhr.open('POST', 'test.php', true);

            xhr.send(blobOrFile);
        };


    </script>
</head>
<body>
    <input type="file" id="fileInput" onchange="submitFile();" />
    Status: <span id="statusBox"></span>
</body>
</html>

基本上,在我的所有浏览器上,当我选择要上传的文件时,会触发进度事件并立即显示整个传输已完成。然后,当文件实际上传时,它就坐在那里,根据文件的不同,几秒/分钟后,脚本会发出警报并显示服务器的正确响应。

我是否遗漏了一些明显的东西?据我所知,这种情况发生在我的所有浏览器(IE10、Chrome 28、FF22)上。

最佳答案

这是我的代码,它对我来说工作得很好:

xhr.upload.onprogress = function(e){
    var done = e.position || e.loaded, total = e.totalSize || e.total
    var present = Math.floor(done/total*100)
    document.getElementById('status').innerHTML = present + '%'
}

关于upload - XMLHttpRequest upload.onprogress 立即完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310038/

相关文章:

swift - 如何用Alamofire(帖子)上传图片?

javascript - 仅在一张 Canvas 中加载图像

javascript - 自定义标题 Angular js

javascript - XMLHTTPrequest 请求不工作

javascript - XMLHttpRequest 事件监听器的执行顺序

php - WordPress 自定义图片上传字段

file - 从 Access 2010 上传文件

php - 如何使用 php 和 mysql 从多列中检索和输出图像?

php - 重命名文件(如果已存在)- php 上传系统

PHP/JavaScript : Javascript not sending data to PHP