关于163邮箱,上传附件,本地验证文件大小的问题。

转载:http://www.cnblogs.com/yaowukonga/admin/EditPosts.aspx?opt=1

以前做过一回上传文件,带进度条的功能。大致的实现细节就是。后台有一个监听器,监听上传流的读取进度,隔断时间放在session中一次,前台就在session中读这个信息,隔段时间更新进度条。大体可以实现功能,但当时有一点,就是本地验证上传文件大小这个功能,使我很纠结。主要原因就是js无法获取文本文件大小,客户端无法获取,那就去服务端获取吧,但服务端获取后再回传前台判断,实在太慢。。所以就这样放下了。今天用163的邮箱,正好看到了它的上传功能,点一下。上传了一个超过50M的文件,很顺利的作出了判断。并且用firbug查看,这个过程并没有请求。那就是通过前台获取的了,通过js吗?我知道前台获取可以通过flash搞到,但看了下它的代码,并没有用flash,真不知道它是如何获取的,各位大牛,了解情况的,不吝赐教。谢谢!


问题补充:
flootball 写道
从客户端也是可以取到文件大小的,但涉及安全方面的问题,
一般都不用,用Ajax请求获取的文件的大小即可,
Ajax每隔一秒或是几秒重新请求获取当前进度。

谢谢你的回答,我曾用过在服务端获取文件大小的方式,感觉用户体验很差。再一个我特意的查看了下163,验证文件大小的过程,并没有发送远程请求的。

问题补充:
hu437 写道
邮箱的邮件验证大小一般都是在本地完成的,是通过flash

可以使用http://swfupload.org/ 这个组件,

这个组件可以实现带进度条的上传,判断文件大小等。现在的很多邮箱QQ\GMAIL等也都是傅的这个

楼主可以留个邮箱,我发一个示例给你

谢谢您的回复啊,你说的那个控件我是知道的。我们目前的项目就是采用的这个东西,我主要是想自己封装一个更灵活的上传组件,我的疑惑主要是在163邮箱的上传功能这,他的邮箱验证上传文件大小是从本地验证的,但并不是flash...所以有点小疑惑,希望您能解答我这个疑惑
 
 
我刚比较了一下,下面是我对163附件上传的看法

使用IE系的浏览器时是可以看到傅的是flash组件上传的,当使用firefox和chrome时不是傅的flash组件


猜测这个是对浏览器判断,当是IE时傅flash,不是IE时使用的可能是HTML5的特性,html5可以检测文件大小
 
 
邮箱的邮件验证大小一般都是在本地完成的,是通过flash

可以使用http://swfupload.org/ 这个组件,

这个组件可以实现带进度条的上传,判断文件大小等。现在的很多邮箱QQ\GMAIL等也都是傅的这个

楼主可以留个邮箱,我发一个示例给你
 
posted @ 2013-01-25 17:17  古来征战几人回  阅读(1194)  评论(0编辑  收藏  举报