使用Javascript上载进度(使用或不使用XMLHttpRequest 2)
使用Javascript上载进度(使用或不使用XMLHttpRequest 2),javascript,ajax,file,upload,progress,Javascript,Ajax,File,Upload,Progress,XMLHttpRequest 2有一个新东西。它可以上传文件。我让它工作了(非常容易)。现在我想知道是否有办法获得该文件的上传进度。我通常不会对此感兴趣,但在Google Chrome(8)中,我看到onreadystatechange事件是一个XMLHttpRequestProgressEvent。进展。。。这里没有关于上传进度的内容(只是请求状态),但这让我感到疑惑 谷歌浏览器在本机上传大文件时有一个进度“计数器”。这是标准的。它总是在那里,不可配置。它在状态栏中。Javascript可以实
XMLHttpRequest 2
有一个新东西。它可以上传文件。我让它工作了(非常容易)。现在我想知道是否有办法获得该文件的上传进度。我通常不会对此感兴趣,但在Google Chrome(8)中,我看到onreadystatechange事件是一个XMLHttpRequestProgressEvent
。进展。。。这里没有关于上传进度的内容(只是请求状态),但这让我感到疑惑
谷歌浏览器在本机上传大文件时有一个进度“计数器”。这是标准的。它总是在那里,不可配置。它在状态栏中。Javascript可以实现类似的功能吗?我想把它放在一个漂亮的
元素或其他东西中
我不想要SWF或Java上传程序(带有轮询和>JS回调)。它必须是本地的。如果浏览器能够做到这一点,那么现在Javascript应该能够做到,对吧!?=)
如果没有XMLHttpRequest 2
,我想用非常标准的文件上传是不可能的(没有ajax,只有
)
感谢您提供的信息钩住进度事件。这将为您提供所有请求的进度。首先检查upload对象是否可用——这将只提供上载部分的进度 大概是这样的:
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
});
xhr.upload和xhr都有进度事件?有什么区别?XHR的唯一功能是上传,只有在开始/结束服务器响应时才会触发?XHR.onprogress。xhr.upload.onprogress每隔一段时间触发一次,直到上传完成。这是预期的和功能性的行为吗?它不是很清楚,并且根据您使用的浏览器和XMLHttpRequest版本的不同而有所不同。基本上,xhr.onprogress用于上传和下载。xhr.upload.onprogress仅在上载时激发。xhr.upload仅在XMLHttpRequest版本2中实现。通过挂接xhr.upload.onprogress(如果可用),或者挂接xhr.onprogress,无论使用哪个版本,都可以获得上载进度。如果钩住xhr.onprogress(即XMLHttpRequestV1),您还将获得响应的进度。