文件上传 数据对比

https://github.com/zhangsichu/UploadDemo/tree/e5997e2cf9b200f74aaa69db53798c8e625f4244/UploadDemo/H5Webuploader 

文件(图片)上传调研

浏览器占有率

来源:百度相册

浏览器占有率

浏览器占有率
Chrome52.94%
IE44.32%
FF1.97%

IE版本占有率

浏览器占有率
IE66.55%
IE70.57%
IE827.33%
IE99.87%
IE10<5%

上传数据统计

来源:百度相册


大小区间(0,100K)[100K,300K)[300K,500K)[500K,800K)[800K,1M)[1M,3M)[3M,5M)[5M,7M)[7M,9M)[9M,11M)[11M,15M)[15M,20M)[20M,30M)[30M,50M)
百分比41.86%21.25%7.89%5.18%2.94%13.04%4.78%2.22%0.50%0.16%0.11%0.04%0.02%0.01%

size_statistic

功能调研

文件选择

方式IE6IE7IE8IE9IE10ChromeFF
单选OOOOOOO
多选XXXXOOO
拖拽XXXXOOO

文件信息

属性说明IE9IE10ChromeFFiOSAndroid
name文件名称XOOO6.03.0
lastModifiedDate文件最后修改日期XOOO6.03.0
size文件大小XOOO6.03.0
type文件类型,HTTP协议中Content-Type格式。XOOO6.03.0

文件内容读取

方法说明IE10ChromeFFiOSAndroid
readAsDataURL按DataURL格式读取文件内容,适用于图片文件。OOO6.03.0
readAsText读取文本文件内容。OOO6.03.0
readAsArrayBuffer按字节读取。OOO6.03.0
readAsBinaryString读取文件并返回二进制字符串。XOO6.03.0

图片预览

方式IE10ChromeFFiOSAndroid
readAsDataURLOOO6.03.0
createObjectURLOOO6.04.0

图片裁剪

IE10ChromeFFiOSAndroid
OOO6.03.0

图片压缩

IE10ChromeFFiOSAndroid
OOO6.03.0

Javascript 与 Flash通信

考虑到Javascript在某些情况下的局限性,可能需要与Flash协作,因此需要Javascript具有与Flash通信的能力。

序列化数据通信:支持;但是需要读取文件序列化后的内容,比如BASE64,内存占用可能会比较大;

二进制数据通信:待验证;

异步文件上传

方式说明IE10ChromeFF
XHR send(FormData)构造FormData发送,HTTP请求与FORM提交一致,后端无需做额外适配通用。OOO
XHR sendAsBinary结合FileReader的readAsBinaryString使用。XO1O
XHR send(Blob)直接发送File对象,浏览器不会进行编码而是直接把Blob内容作为POST DATA,需要后端自行解析。O*O*O*
XHR send Base64通过FileReader的readAsDataURL方法获取图片Base64编码,以文本方式发送到后端处理,需要后端自行解析。O*O*O*
WebSocket send binary通过FileReader获得Blob或ArrayBuffer,通过WebSocket发送到后端,需要后端获取数据并解析。O*O*O*

1可模拟; *服务器端需要适配;

性能评测

评测的两个方面:

  • HTML5与Flash共同拥有的功能进行对比;
  • HTML5某个功能的不同实现进行比较;

预览

图片预览在HTML5和Flash均可实现,同时HTML5本身有两种实现方式,因此同时参与评测。

下图为使用FlashHTML5 DataURLHTML5 ObjectURLHTML5 DataURL with resizeHTML5 ObjectURL with resize五种方式进行图片预览时所消耗的内存比较:

方式 100K 300K 500K 800K 1M 3M 5M 10M ALLExtreme(600M / 274 Files)
Flash 1 1 1 1 1 4 7 22 50650
H5 DataURL 2.6 12.6 18.2 22.7 27.6 122 172 252 591N/A
H5 ObjectURL 1.1 3.5 6.1 8.4 9.5 69 75 88 274N/A
H5 DataURL Resize 4.2 6.5 12 16 24 59 105 185 245N/A
H5 ObjectURL Resize 1 1 1 1.7 1.7 4.5 10.5 18 30 150

五种预览方式内存消耗对比结果

测试时依次预览100K、300K、500K、800K、1M、3M、5M和10M的图片,以及批量预览上述图片,而针对Flash以及ObjectURL with resize还进行了批量274个图片文件共计600M大小的预览测试。

从测试结果来看,HTML5 ObjectURL with resize方案最理想,尤其在批量上传时内存能够有效的回收;其次是Flash,但在批量上传时内存回收不明显,剩余其他几个方案内存消耗都比较大。

压缩

压缩测试是针对一张10M(5134*3456px)JPEG图片,按不同压缩质量压缩,比较压缩后的图片大小以及压缩所消耗的时间。

HTML5 ObjectURL
图片质量(%)1009080706050
耗时(ms)543500495481472428
大小(KB)2449741512406340296
Flash
图片质量(%) 100 90 80 70 60 50
耗时(ms) 4768 3555 3295 3205 3243 3137
大小(KB) 2945 895 608 483 407 356

压缩耗时比较


压缩耗时比较

压缩大小比较

压缩大小比较

从测试数据来看,相同质量下,Flash压缩后的图片比HTML5的要大20%左右,而Flash压缩所消耗的时间则是HTML5的3.5倍。

评测总结

  • 兼容性:与HTML5相比,Flash兼容性在PC端全面占优,但是在移动端则正好相反;HTML5在IE10+、Chrome以及Firefox中均有较好的兼容性和稳定性;
  • 能力:Flash在文件上传方面的功能HTML5均能覆盖,包括多选、剪裁、压缩、预览、异步上传等,而且HTML5还能通过拖拽来选择文件,因此在这方面HTML5更具优势;
  • 性能:在图片预览和压缩两种操作中,无论是内存消耗还是时间消耗,HTML5的性能都优于Flash;此外,使用HTML5实现时需要载入的文件比Flash更小,在载入速度方面HTML5也占据优势;

结论

从评测数据来看,HTML5在可用的环境中各方面均优于Flash,因此对于Chrome、IE10+、Firefox、Safari等支持HTML5的环境中使用HTML5完整实现上传功能,而在不支持HTML5的环境中使用Flash。

此外,尽量不考虑在HTML4环境中使用JS来实现批量的文件上传功能,一方面需要考虑各种兼容性问题,这会给稳定性带来考验;另一方面,HTML4环境中如果需要实现图片预览将会遇到很多问题,很可能需要在JS版本中维护多套实现;总之,在HTML4中实现JS的批量上传是一件投入产出比很低的事情。

软件功能: 可以已目录为准进行文件统计,当然这不是普通的统计,您可以选择统计文 件的类型;比如:以文件后缀,文件大小,文件访问日期,文件名包含字符等。 可以已文件为准进行数据统计,您只需要输入一个字符串或字符,软件便会 在源文件以只读的方式搜索,一个不落的全部统计。 所有这些结果,都会以良好的机制管理,您可以在属性中设置将多少天前的 统计自动删除。结果中有非常详尽的信息,绝对能满足您的欲望;比如:文件统 计则会把所有的符合条件文件有序的列出,包括统计时间,文件总数,大小等。 数据统计则会用间隔符分条列出,每个结果都会列出在源文件中多少行,列等。 ---------------------------------------------------------------------- 软件区别: 也许有人会认为我做这款软件完全是多余,因为系统都自带了搜索功能。我 想说:“没错,系统是自带了,但是自带的搜索功能很有限。”我的软件可以说 是一个很好的拓展,比如:搜索没有用的0字节的文件(搜索文件大小范围都为输 入0),搜索文件还对后缀和文件名进行了区分;同时还能对文件中的数据进行统 计(建议统计文件数据时用高速模式)。当然,以上这些都会建立数据库来保存。 至此,您可能会需要这款精美软件... ---------------------------------------------------------------------- 软件更新: ---文件检测大师3.3 1.添加以文件类型统计功能 2.添加了预设类型项目 3.添加了右键快捷菜单 4.优化了部分算法 5.修改了部分界面 ---文件检测大师3.2 1.完善了以访问日期统计功能 2.完善了文件夹计时管理 3.修改了部分检测算法 4.修改了文件夹管理天数限制 5.解决了已知所有的BUG ---文件检测大师3.1 1.添加了以文件的日期统计功能 2.添加了终止菜单项和桌面快捷 3.更改了菜单项部分机制和功能 4.优化了部分代码和原创算法 5.修正了日期计算失误的错误 6.调整了主窗体的界面和信息 ---------------------------------------------------------------------- 作者寄语: 目前软件是免费的,大家可以放心使用,也请大家尊重我的劳动,尊重软件 的版权所有,软件如果有不和意之处还请大家提出或谅解。软件算法均原创,速 度不会慢,如果嫌慢就用高速模式(会后台运行)。做这个软件的目的也是希望 大家能认识我支持我,你们的支持便是我最大的荣耀。 ---------------------------------------------------------------------- 最初开发时间:2009年2月10日 23:54:16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值