Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript上载进度(使用或不使用XMLHttpRequest 2)_Javascript_Ajax_File_Upload_Progress - Fatal编程技术网

使用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),您还将获得响应的进度。