在处理大文件时,无法忍受因为一时的网络原因导致上传失败,从而重新再上传的烦恼。好
的方法是将一个大文件分成
N 个小块来进行上传,即使第一次失败了,之前上传的那部分
由于得到了保留,再次点击上传时,以前已经传输成功的部分就不会再次被重新写入文件。
注意,第二次上传时,文件还是从
0 开始传输到服务器,而不能根据服务器上的文件选择
性的传输片断,这部分不太好节省,有兴趣的可以研究下。
如何实现异步上传
这里可以利用
jQuery 的相应插件来完成,它的主要功能是将文件分割成 N 多个小块来批量
上传
,参考网址:
https://github.com/blueimp/jQuery-File-Upload
如何实现断点续传
其实这个也非常简单,在
Http 头信息中有一个 Conten-Range 的属性,它会说明此次传递的
文件内容的片断范围,我们只需要在后台解析这个范围稍加处理就可以实现。之所这么简单,
是因为有了上面的
jQuery 上传文件的插件,它负责将一个大文件分成 N 多小块进行传输,
这就有了请求头中的
Content-Range。
这篇文章主要参考了
http://weblogs.asp.net/bryansampica/archive/2013/01/15/AsyncMVCFileUpload.aspx
,但它没
有完成对文件的保存功能,我这里加了断点续传的逻辑。
效果图:
可支持同时上传多个文件