java jsp 文件断点 多线程 迅雷下载
分享我的端点下载package com.zzvcom.common;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 断点续传 */public abstract class FileRender{ public static void RenderDownloadFile(HttpServletResponse response, HttpServletRequest request, File file, String fileName) { try { response.reset(); response.setContentType("application/octet-stream"); response.setHeader("Accept-Ranges", "bytes"); response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8")); response.setHeader("Content-Length", file.length() + ""); OutputStream os = response.getOutputStream(); String range = request.getHeader("Range"); // System.out.println("range:"+range); FileInputStream fis = new FileInputStream(file); byte[] bytes = new byte; if (range != null) { range = range.substring("bytes=".length(), range.length() - 1); long start = Long.parseLong(range); fis.skip(start); long l = file.length(); String contentRange = new StringBuffer("bytes ").append(start) .append("-").append(l - 1).append("/").append(l) .toString(); response.setHeader("Content-Range", contentRange); response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); } BufferedInputStream buff = new BufferedInputStream(fis); int len = 0; while ((len = buff.read(bytes)) > 0) { os.write(bytes, 0, len); } // os.close(); buff.close(); } catch (Exception e) { e.printStackTrace(); } }}
我不喜欢写注释大家仔细看吧呵呵
页:
[1]