spring大文件分块上传原理解析
来源:互联网 发布:联合作战指挥体系 知乎 编辑:程序博客网 时间:2024/06/05 18:00
这两天关于大文件上传这个问题搞得很是头疼,昨天下班回去调研了下,对于不同大小的文件对应有几种解决办法:
- 500M以下的用http协议传输(网上一搜大把的)
- 500M以上1G以下的用http协议分块或者ftp协议传输
- 1G以上的只能用ftp协议传输
第一种很简单,博主在这里就不谈了。
第二种是博主最近几天一直在考虑的。谁知昨天天无意中看到了原同事(大神级别)博客的一篇文章,算是大致明白了http协议分块传输原理。要想分块要解决下面几个问题:
1已上传的文件怎么唯一标识,然后不用再次上传
2.前端怎么分块
3.后端怎么接受分块,组装多个分块
一、取文件的md5值,上传后把md5存数据库;再次上传时获取前端传来的md5到数据库中查询,如果已存在,则不用再次上传
二、关于前端分块,请参考http://fex-team.github.io/webuploader/
三、后端接受分块
1.每当一个分块到来,后端根据其带的md5在服务器创建一个同名的文件夹,并根据块的索引,创建同名的文件(0,1,2...),并用spring mvc上传到服务器。2.当所有的分块都传完后,前端像后端发送合并的请求,那么问题来了,怎么合并呢?答案就是:FileChannel下面上干货FileChannel outChannel = new FileOutputStream(outputFile).getChannel(); //合并 FileChannel inChannel; for(File file : files){ inChannel = new FileInputStream(file).getChannel(); inChannel.transferTo(0, inChannel.size(), outChannel); inChannel.close(); //删除分片 if(!file.delete()){ log.error("分片[" + folder + "=>" + file.getName() + "]删除失败"); } } outChannel.close();
关于ftp上传,也是博主下一步考虑的事情,敬请期待。
第二弹,请看下面
http://blog.csdn.net/haohao123nana/article/details/54692669
0 0
- spring大文件分块上传原理解析
- spring大文件分块上传原理解析
- 分块上传大文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- 大文件分块上传,断点续传
- Silverlight 上传 大文件分块上传
- 大文件分块上传第三弹(分块并发上传)
- ASP.NET MVC 大文件 分块上传
- asp.net分块上传大文件
- HTLM5+ajax大文件分块上传
- asp.net大文件分块上传视频教程
- 大文件分块上传以及断点续传
- android 大文件分割上传(分块上传)
- android 大文件分割上传(分块上传)
- android 大文件分割上传(分块上传)
- UVA 11178 Audiophobia 几何基础
- CodeForces 663A Rebus
- [二分]取余运算||快速幂
- java基础练习题
- 二叉树的创建与遍历
- spring大文件分块上传原理解析
- 序列化与反序列化
- GDI+ Bitmap与WPF BitmapImage的相互转换
- 循环结构
- mac 启动tomcat
- Core Data入门
- 查看windows8激活状态
- iOS 开发类库
- 苹果浏览器按钮样式问题