3

XMLHttpRequest 2有一个新东西。它可以上传文件。我得到了那个工作(这非常容易)。现在我想知道是否有办法获取该文件的上传进度。我通常不会对此感兴趣,但在 Google Chrome (8) 中,我看到 onreadystatechange 事件是一个XMLHttpRequestProgressEvent. 进度......那里没有关于上传进度的内容(只是请求状态),但这让我想知道。

谷歌浏览器在本地上传大文件时有一个进度“计数器”。这是标准的。它始终存在且不可配置。它在状态栏中。Javascript可以实现类似的功能吗?我想把它放在一个不错的<progress>元素或其他东西中。

我不想要 SWF 或 Java 上传器(带有轮询和 >JS 回调)。它必须是原生的。如果浏览器可以做到,那么现在的Javascript应该可以做到,对吧!?=)

在 no 的情况下XMLHttpRequest 2,我想通过非常标准的文件上传(没有 ajax 而只是 a <input type=file>)是不可能的。

谢谢(你的)信息

4

1 回答 1

9

挂钩进度事件。这将为您提供所有请求的进度。首先检查上传对象是否可用——这只会为您提供上传部分的进度。

像这样的东西:

var xhr; // this is your XMLHttpRequest

// hook to upload events if available, otherwise snag all progress events
var eventSource = xhr.upload || xhr;

eventSource.addEventListener("progress", function(e) {
    // normalize position attributes across XMLHttpRequest versions and browsers
    var position = e.position || e.loaded;
    var total = e.totalSize || e.total;

    // TODO: display progress
});
于 2010-12-12T21:28:44.380 回答