原来163的大容量异步上传是这么实现的
2013-12-06 16:38
344 查看
本来准备在我开发的系统里弄个大容量异步上传附件的东西,看了看,感觉还是163的比较酷,于是准备拔下来看看。
看了半天没看到有任何一行关于上传文件的代码,于是准备祭出神奇:F12,抓网络请求!
连续实验了许多次,每次的请求只有几百byte,没道理啊,我一个文件大概有300KB,就算分成几段上传,也不可能每次都只有300B啊,难道客户端把文件
的二进制读出来,然后压缩再上传?想想,不太可能,就算是300KB分成10段,每段起码30KB,和300B比起来差了100倍,而且我上传的文件既有JPG,也有PDF。
JPG是已经压缩过的了,难道还能压缩?就算是压缩也不可能压缩比能到1:100啊,于是google,翻看了很多大数据异步上传的案例,都是通过form提交来实现的,感觉不爽。
难道是通过activex来实现的?想了想还真有这种可能。
于是在IE下,把ACTIVEX挨个的禁用。把M$的所有ACTIVEX全都禁用,发现还能上传,妹的,不信了!于是把adobe的flash也禁用了!
果然,发现163不能异步上传了,脑子里面灵光一现:难道是通过flash进行的上传?
越想越可能,也只有使用flash才能保证跨平台、跨浏览器、无法再浏览器的网络请求中抓包。
于是,继续,看看他们的页面上都加载了什么资源:
果然,发现加载了一个叫做/js5/h/FileSplitUploader.swf 的flash,真正的罪魁祸首是她!
好吧,看来我需要转变一下思路了,用js分段提交的话,一个是受限于JS的计算能力,还有可能会受到浏览器的限制,用flash来上传到的确是一个不错的思路。
分析完毕!
看了半天没看到有任何一行关于上传文件的代码,于是准备祭出神奇:F12,抓网络请求!
连续实验了许多次,每次的请求只有几百byte,没道理啊,我一个文件大概有300KB,就算分成几段上传,也不可能每次都只有300B啊,难道客户端把文件
的二进制读出来,然后压缩再上传?想想,不太可能,就算是300KB分成10段,每段起码30KB,和300B比起来差了100倍,而且我上传的文件既有JPG,也有PDF。
JPG是已经压缩过的了,难道还能压缩?就算是压缩也不可能压缩比能到1:100啊,于是google,翻看了很多大数据异步上传的案例,都是通过form提交来实现的,感觉不爽。
难道是通过activex来实现的?想了想还真有这种可能。
于是在IE下,把ACTIVEX挨个的禁用。把M$的所有ACTIVEX全都禁用,发现还能上传,妹的,不信了!于是把adobe的flash也禁用了!
果然,发现163不能异步上传了,脑子里面灵光一现:难道是通过flash进行的上传?
越想越可能,也只有使用flash才能保证跨平台、跨浏览器、无法再浏览器的网络请求中抓包。
于是,继续,看看他们的页面上都加载了什么资源:
果然,发现加载了一个叫做/js5/h/FileSplitUploader.swf 的flash,真正的罪魁祸首是她!
好吧,看来我需要转变一下思路了,用js分段提交的话,一个是受限于JS的计算能力,还有可能会受到浏览器的限制,用flash来上传到的确是一个不错的思路。
分析完毕!
相关文章推荐
- EL表达式
- ios版本的获取
- jsp spring autowire
- IIF函数
- 银行业务学习之道:浦东发展银行“万用金”——信用卡另类赚钱法
- JAVA NIO 简介
- Jquery qTip2实现多种提示效果,支持ajax,以及多种样式
- Linux下C语言的调试
- 多线程__【线程安全】【线程同步】【单例模式的线程安全】【线程死锁】
- mongo的持久化之Journaling
- hdu1839(二分+优先队列,bfs+优先队列与spfa的区别)
- windows driver 的入门方法
- mysql 事件
- 浏览器页面传值跳转
- Qt之任务栏系统托盘图标
- 银行业务学习之道:信用卡的具体功能
- 切换上下文,阻塞,内存同步
- 零点起飞学C#
- Android扩展:一个自动findViewById的小工具
- 在某网站的信息上,深感baidu快照的强大