断点上传能够防止意外情况导致上传一半的文件下次上传时还要从头下载,网上有很多关于断点的实现,这篇文章只是从前到后完整的记录下一个可用的实例,由于生产环境要求不高,而且就是提供给一两个人用,所以我简化了诸多过程,不用flash,也不用applet,只是通过html5的新特性进行浏览 ...
- 断点上传能够防止意外情况导致上传一半的文件下次上传时还要从头下载,网上有很多关于断点的实现,这篇文章只是从前到后完整的记录下一个可用的实例,由于生产环境要求不高,而且就是提供给一两个人用,所以我简化了诸多过程,不用flash,也不用applet,只是通过html5的新特性进行浏览器端的处理。
- 简单说下关键点
- 如果上次传到n字节,那么浏览器下次续传直接就是从文件的n字节开始向服务器传送数据,而不是都传过去,服务器从n字节开始接收。
- html5能给文件分片,所以每次上传完一块文件后,应该返回当前已经上传的文件大小,好让h5能从此断点继续读取。
- 前端的js是网上别人的底子,我进行了可用性修改。
- 代码完全可用,而且都是用的最简单的东西实现
- 可以看到我用了本地文件的最后修改时间这个属性,因为这样可以脱离数据库只通过文件名+文件最后修改时间来确定文件的唯一性,如果生产中有数据库的接入,建议先生成续传文件并返回对应的唯一id。
- 获取当前已经上传文件的大小
/** * 获取已上传的文件大小 * @param request * @param response */ public void getChunkedFileSize(HttpServletRequest request,HttpServletResponse response){ //存储文件的路径,根据自己实际确定 String currentFilePath = "c:\\uploadFile\\Image\\"; PrintWriter print = null; try { request.setCharacterEncoding("utf-8"); print = response.getWriter(); String fileName = new String(request.getParameter("fileName").getBytes("ISO-8859-1"),"UTF-8"); String lastModifyTime = request.getParameter("lastModifyTime"); File file = new File(currentFilePath+fileName+"."+lastModifyTime); if(file.exists()){ print.print(file.length()); }else{ print.print(-1); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:文件断点上传,html5实现前端,java实现服务器
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。