下载文件具体实现代码:
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; } }