传统的HTML方式已经难已满足超大文件的上传。别说是100MB,50MB对服务器来说都是非常大的,服务不仅要专门开一个链接等待这个文件上传完毕,还要分配同等大小的内存来保存这个文件对服务器来讲压力相当的大。
在实际网络环境中一般10MB左右的文件都需要借助于控件来实现。一方面是因为国内的网络环境不太稳定,另一方面是从服务器的负载方面考虑。
像QQ邮箱中的超大附件上传功能,115网盘中的超大附件上传控件,华为网盘(DBank),金山快盘他们都是使用控件来实现超大文件上传功能的。
他们通过控件将一个大文件,比如1G划分成许多的小块,每一小块大约是128KB,然后循环上传,直到上传完。
服务器端每接受一小块,相当于接受到一个单独的文件,会直接写入硬盘里。最后,把接受的所有文件给组合起来。
这样做的优点就是减轻了服务端的压力,提高了服务端的负载能力,使得服务端能够处理的用户请求数多了。
jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除和断点续传,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。