Javascript HTML5文件上载进度-仅客户端

Javascript HTML5文件上载进度-仅客户端,javascript,upload,html,file-upload,Javascript,Upload,Html,File Upload,我注意到新的XMLHttpRequest对象在firefox中支持“onprogress”事件。是否可以利用新HTML5文件api的一部分来获得上传进度条,而无需任何服务器端修改?我原则上相信是的,尽管我还没有尝试过 问题是XMLHttpRequest#send()接受Unicode字符串并将其编码为UTF-8。它不能让您发送纯二进制文件,而且像图像这样的大多数二进制文件不会碰巧是有效的UTF-8序列 因此,您可能会使用FileAPI规范所称的“二进制字符串”(字节被视为ISO-8859-1,因

我注意到新的XMLHttpRequest对象在firefox中支持“onprogress”事件。是否可以利用新HTML5文件api的一部分来获得上传进度条,而无需任何服务器端修改?

我原则上相信是的,尽管我还没有尝试过

问题是
XMLHttpRequest#send()
接受Unicode字符串并将其编码为UTF-8。它不能让您发送纯二进制文件,而且像图像这样的大多数二进制文件不会碰巧是有效的UTF-8序列

因此,您可能会使用FileAPI规范所称的“二进制字符串”(字节被视为ISO-8859-1,因此每个
charCodeAt
对应一个字节),重新编码为UTF-8。这将比普通文件上传大50%左右。是否值得以较慢的上传速度获取进度报告


(天哪,如果浏览器有一个更好的用户界面来显示上传的进展情况,那么就不需要没完没了的脚本/Flash/Java/ActiveX废话了。来吧,浏览器供应商,一个带有进度条的大信息弹出窗口真的太好了吗?

是的,理论上,尽管我不得不质疑其准确性,因为互联网速度通常会波动(如果你不上网,情况会更糟)。它可能会跳很多次


那么,什么是准确的进度条?我想先在Windows中看到一个,然后再在网上看到一个

更重要的是:如果您使用的是HTTP代理,而HTTP代理的连接速度较慢,那么客户端将在代理将数据上传到远程服务器之前完成所有数据的发送。好的,Chrome会在左下角的小状态栏上显示上传进度。我不太确定,但我认为Opera也会在进度条上显示上传进度。您应该阅读本文,以获得更多关于客户端操作的知识,