当前位置 : 主页 > 编程语言 > java >

断点续传JAVA实现

来源:互联网 收集:自由互联 发布时间:2021-06-28
支持H5 Video标签播放,迅雷下载 /** * 断点续传工具 * @author lxycx_xc * 时间:2017年11月30日 */public class BreakpointResume {private static Logger log = Logger.getLogger(BreakpointResume.class);/**下载操作,支持断
支持H5 Video标签播放,迅雷下载
/**
 * 断点续传工具
 * @author lxycx_xc
 * 时间:2017年11月30日
 */
public class BreakpointResume {
	
	private static Logger log = Logger.getLogger(BreakpointResume.class);
	
	
	/**下载操作,支持断点续传*/
	public static void download(HttpServletRequest req,HttpServletResponse resp,String filepath) throws NumberFormatException, IOException{
		//请求头参数
		File file = new File(filepath);
		Long fileSize = file.length();
		Long lasttime = file.lastModified();
		Long size = fileSize;
		int i = 0;
		
		String range = req.getHeader("Range");
		String ifm = req.getHeader("If-Modified-Since");
		if(ifm!=null&&Long.parseLong(ifm)
 
  size){
							ranges[1] = String.valueOf(Long.parseLong(ranges[0])+size);	
						}else{
							ranges[1] = String.valueOf(fileSize-1);						
						}
					}
					
					raf.seek(Long.parseLong(ranges[0]));//从指定位置开始读取
					resp.setHeader("Last-Modified", String.valueOf(lasttime));//文件最后修改时间
					resp.setHeader("Content-Range", "bytes "+StringUtils.join(ranges, "-")+"/"+fileSize);//请求的数据 开始-结束/文件总大小
					resp.setStatus(206);
				}
				int len = 0;
				while((len=raf.read(buff))>0&&i
 
网友评论