首页 / 知识
关于javascript:如何从XMLHttpRequest获取进度
2023-04-16 05:07:00
How to get progress from XMLHttpRequest是否可以获取XMLHttpRequest的进度(上传的字节数,下载的字节数)? 当用户上传大文件时,这对于显示进度栏很有用。 标准API似乎不支持它,但是也许在任何浏览器中都有一些非标准扩展? 毕竟,这似乎是一个非常明显的功能,因为客户端知道上载/下载了多少字节。 注意:我知道"轮询服务器以获取进度"替代方案(这是我现在正在做的事情)。 这样做的主要问题(除了复杂的服务器端代码)是,通常,在上传大文件时,用户的连接已完全断开,因为大多数ISP的上游情况较差。 因此,发出额外的请求并不像我希望的那样迅速。 我希望有一种方法(可能是非标准的)来获取此信息,而浏览器始终都有。
对于上传的字节,这非常容易。只需监视
对于下载的字节(使用
有一个解决方案,在服务器脚本上设置 有关更多信息,请访问https://developer.mozilla.org/en/Using_XMLHttpRequest。
例:
现在,我可以监视服务器脚本的下载过程,因为我知道它的总长度:
Firefox支持XHR下载进度事件。 这里对AJAX模式的进度指示器进行了很好的讨论: http://ajaxpatterns.org/Progress_Indicator 最有前途的方法之一似乎是向服务器打开第二条通信通道,询问服务器已完成多少传输。 Firefox 3.5将支持上传进度事件 对于上载的总数,似乎没有一种处理方法,但是有些与您要下载的内容相似。一旦readyState为3,您就可以定期查询responseText以下载所有内容,直到一个String为止(这在IE中不起作用),直到所有内容都可用时为止,它将转换到readyState 4。在任何给定时间下载的字节数将等于存储在responseText中的字符串中的总字节数。 对于上载问题的全有或全无的方法,由于您必须传递一个用于上载的字符串(并且可以确定该字符串的总字节数),为readyState 0和1发送的总字节数将为0,而为readyState发送的总数为0 2是您传入的字符串中的总字节。在readyState 3和4中发送和接收的总字节将是原始字符串中的字节总和加上responseText中的总字节。
如果您有权访问apache安装并信任第三方代码,则可以使用apache上传进度模块(如果使用apache,则还有一个nginx上传进度模块)。 否则,您必须编写一个脚本,可以带外使用该脚本来请求文件的状态(例如,检查tmp文件的文件大小)。 我相信在firefox 3中正在进行一些工作,我相信会为浏览器添加上载进度支持,但是这并不会渗透到所有浏览器中,并且会在一段时间内被广泛采用(更可惜的是)。
用纯JavaScript做到这一点的唯一方法是实现某种轮询机制。
一种更有效的方法是使用闪存。 flex组件FileReference定期调度一个'progress'事件,该事件持有已上传的字节数。 swfupload 该库允许在Flash进度事件上注册JavaScript处理程序。 该解决方案具有不需要服务器端附加资源的缺点。 |
最新内容
相关内容
linux命令暂停下载?
linux命令暂停下载?,系统,代码,暂停,第一,服务,管理,命令,进程,程序,接线,linux下nginx停止命令首先,连接相应linux主机,进入到linux命令行状态linux命令下载工具?
linux命令下载工具?,工具,网络,代理,代码,简介,位置,系统,第一,下载工具,文件,Linux下多线程下载工具MWget和Axel使用介绍1、wget是linux下一linux显示错误命令?
linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚拟机里怎么开始linux系统,打startx命令提示错误1、第一种:这个问题linux逐行显示命令?
linux逐行显示命令?,标准,信息,系统,工作,地址,命令,实时,名称,文件,目录,Linux中显示一个文件最后几行的命令是什么?1、tail -n 20 filenamelinux命令中添加用户?
linux命令中添加用户?,系统,密码,软件,用户,命令,信息,目录,用户名,账号,文件夹,linux添加用户名1、打开xshell软件,远程访问您的服务器或虚拟linux显示时间命令?
linux显示时间命令?,时间,系统,管理,标准,信息,单位,工具,数据,中国,命令,linux必学的60个命令安装和登录命令:login、shutdown、halt、rebootlinux服务器上传命令?
linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,从linux服务器中下载或上传文件您要问的是为什么linux服务器一直linux下载打包命令行?
linux下载打包命令行?,软件,系统,名称,工具,官网,文件,命令,目录,下面,表示,linux命令行下如何下载应用软件(linux怎么下载软件)软件的卸载主linux命令更改用户?
linux命令更改用户?,系统,密码,管理,用户,命令,环境,工作,地址,电脑,文件,linux如何更改用户名?1、首先打开linux的终端,输入指令修改用户名,简linux修改用户名命令?
linux修改用户名命令?,系统,密码,查询系统,代码,数字,用户名,命令,第三,电脑,第一,linux怎样修改用户名和主机名以 root 用户登录系统或者使用linux命令给用户授权?
linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,linux怎样给普通用户设置权限添加用户 添加账号就是在系统中创建linux启动显示命令行?
linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信