下载文件到浏览器
程序员文章站
2022-07-14 09:39:20
...
package com.smjrfwpt.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
/**
* @Author Lhj
* @Date 2020/9/25 11:07
*/
public class Down {
// 注:// 获取项目下文件或者文件流// File file = new File(this.getClass().getResource("/xls/adminImportUserTemplate.xls").toURI());// in = new BufferedInputStream(this.getClass().getResourceAsStream("/xls/adminImportUserTemplate.xls")); /**
/**
* 下载文件到浏览器
* @param request
* @param response
* @param filename 要下载的文件名
* @param file 需要下载的文件对象
* @throws IOException
*/
public static void downFile(HttpServletRequest request, HttpServletResponse response, String filename, File file) throws IOException {
// 文件存在才下载
if (file.exists()) {
OutputStream out = null;
FileInputStream in = null;
try {
// 1.读取要下载的内容
in = new FileInputStream(file);
// 2. 告诉浏览器下载的方式以及一些设置
// 解决文件名乱码问题,获取浏览器类型,转换对应文件名编码格式,IE要求文件名必须是utf-8, firefo要求是iso-8859-1编码
String agent = request.getHeader("user-agent");
if (agent.contains("FireFox")) {
filename = new String(filename.getBytes("UTF-8"), "iso-8859-1");
} else {
filename = URLEncoder.encode(filename, "UTF-8");
}
// 设置下载文件的mineType,告诉浏览器下载文件类型
String mineType = request.getServletContext().getMimeType(filename);
response.setContentType(mineType);
// 设置一个响应头,无论是否被浏览器解析,都下载
response.setHeader("Content-disposition", "attachment; filename=" + filename);
// 将要下载的文件内容通过输出流写到浏览器
out = response.getOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
}
}
}
}
上一篇: Unity 之鼠标滑动屏幕或拖动物体
下一篇: 单例模式-饿汉与懒汉式
推荐阅读
-
Python_WIN10系统中递归所有文件夹所有文件_移动所有文件到主目录(使用到的库:os + glob + shutil)
-
怎么用打印机扫描文件到桌面?
-
fat32转ntfs方法大全解决下载存储大于4GB以上的单个文件
-
使用傲游浏览器在线记事本记录工作及保存重要文件教程
-
火狐浏览器插件BatchDownload批量下载网页中的图片
-
下载文件到桌面时图标左下角出现小黄锁是什么原因如何解决
-
IE提示当前安全设置不允许下载该文件怎么办?原因及图文解决方法
-
IE8下载文件时无法调用迅雷怎么办?IE8浏览器无法用迅雷下载问题的解决办法介绍
-
IE提示当前安全设置不允许下载该文件怎么办的2种解决方法
-
借助谷歌浏览器chrome的的插件批量下载网页图片