下载文件具体实现代码:
public class TestDownload{
public HttpServletRequest request;
public HttpServletResponse response;
//下载文件
public static void downLoadFile(){
String downloadFileName = "下载后文件名_TEST.xlsx";
FileInputStream inputStream = null;
OutputStream outputStream = null;
File file = null;
try {
file = new File(getFilePath(request));
if (!file.exists()) {
log.info("日报文件不存在,请重新导出数据");
} else {
inputStream = new FileInputStream(file);
response.setContentType("application/txt;charset=utf-8");
response.setHeader("Content-Disposition",
"attachment;Filename=" + new String(downloadFileName.getBytes("GB2312"), "ISO8859-1"));// 设置下载后文件的名字、防止中文乱码
outputStream = response.getOutputStream();
byte[] bytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bytes)) > 0) {
outputStream.write(bytes, 0, len);
}
}
} catch (IOException e) {
log.error("文件下载异常:", e);
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
log.error("下载日报中关闭流异常 :{} ", e);
}
}
}
//获取服务器文件路径
private String getFilePath(HttpServletRequest request) {
String fileName = "服务器文件.xlsx";
String projectPath = request.getSession().getServletContext().getRealPath("/downloadfile/tset");
return projectPath + "/" + fileName;
}
}