final String filePath ="E:\\home\\file\\失败文件-20211230134403.xlsx"; String fileName = null; try { fileName = URLEncoder.encode(filePath.substring(filePath.lastIndexOf("\\") + 1), "UTF-8"); } catch (UnsupportedEncodingException e) { log.error("下载模板失败", e); return log.error(String.format("下载错误文件失败 %s", e.toString())); } response.setContentType("multipart/form-data"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment;filename*= UTF-8''" + fileName); FileInputStream exportTemp = null; try { exportTemp = new FileInputStream(filePath); } catch (FileNotFoundException e) { log.error("未找到磁盘文件", e); return log.error(String.format("未找到磁盘文件 %s", e.toString())); } OutputStream outputStream = null; BufferedInputStream bis = null; try { outputStream = response.getOutputStream(); } catch (IOException e) { log.error("下载错误文件失败", e); return log.error(String.format("下载错误文件失败 %s", e.toString())); } byte[] buff = new byte[1024]; try { bis = new BufferedInputStream(exportTemp); int i = bis.read(buff); while (i != -1) { outputStream.write(buff, 0, buff.length); outputStream.flush(); i = bis.read(buff); } } catch (IOException e) { return log.error(String.format("下载错误文件失败 %s", e.toString())); } finally { if (ToolUtil.isNotEmpty(bis)) { try { bis.close(); } catch (IOException e) { log.error("资源关闭异常", e); } } if (ToolUtil.isNotEmpty(outputStream)) { try { outputStream.close(); } catch (IOException e) { log.error("资源关闭异常", e); } } if (ToolUtil.isNotEmpty(exportTemp)) { try { exportTemp.close(); } catch (IOException e) { log.error("资源关闭异常", e); } } buff = null; }