分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

HttpServletResponse实现文件下载

发布时间:2023-09-06 01:42责任编辑:沈小雨关键词:暂无标签
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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved