import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.http.HttpServletResponse;import org.springframework.util.StringUtils;/** * 文件下载 */public class FileLoad { ???/** ????* 使用response返回文件流 ????*/ ???public void loadFile(String filePath, HttpServletResponse response) { ???????// 声明工具类 ???????BufferedInputStream in = null; ???????BufferedOutputStream out = null; ???????try { ???????????// 若路径为空 ???????????if (StringUtils.isEmpty(filePath)) { ???????????????throw new Exception("invalid filepath of null."); ???????????} ???????????// 没找到文件 ???????????File file = new File(filePath); ???????????if (!file.exists()) { ???????????????throw new Exception("file not exist in path [" + filePath + "]"); ???????????} ???????????// 获取文件名 ???????????String fileName = file.getName(); ???????????// 输出文件流到浏览器 ???????????in = new BufferedInputStream(new FileInputStream(filePath)); ???????????out = new BufferedOutputStream(response.getOutputStream()); ???????????response.setContentType("application/x-download;charset=utf-8"); ???????????response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); ???????????byte[] buffer = new byte[8192]; ???????????int count = 0; ???????????while ((count = in.read(buffer, 0, 8192)) != -1) { ???????????????out.write(buffer, 0, count); ???????????} ???????????out.flush(); ???????????file = null; ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????} finally { ???????????closeStream(in, out); ???????} ???} ???/** ????* 关闭输入输出流 ????*/ ???public void closeStream(InputStream in, OutputStream out) { ???????if (null != in) { ???????????try { ???????????????in.close(); ???????????} catch (IOException e) { ???????????????// e.printStackTrace(); ???????????} ???????} ???????if (null != out) { ???????????try { ???????????????out.close(); ???????????} catch (IOException e) { ???????????????// e.printStackTrace(); ???????????} ???????} ???}}
HttpServletResponse实现文件下载
原文地址:https://www.cnblogs.com/zj0208/p/8436539.html