SpringMVC -> 下载文件(download)
方式一:
controller
1.要下载的图片地址:request.getServletContext().getRealPath("/upload") 2.下载的文件
@RequestMapping("/download") public String downLoad(HttpServletRequest request, HttpServletResponse response) throws IOException { //要下载的图片地址 String upload = request.getServletContext().getRealPath("/upload"); String fileName = "1.png"; //1、设置response 响应头 //设置页面不缓存,清空buffer response.reset(); //字符编码 response.setCharacterEncoding("utf-8"); //二进制传输数据 response.setContentType("multipart/form-data"); //设置响应头 response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); File file = new File(upload, fileName); //2、 读取文件--输入流 try (FileInputStream fileInputStream = new FileInputStream(file)) { //3、 写出文件--输出流 try (ServletOutputStream outputStream = response.getOutputStream()) { int len = 0; byte[] bytes = new byte[1024]; //4、执行 写出操作 while ((len = fileInputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, len); outputStream.flush(); } } } return "redirect:/index.html"; }
html
<a href="/download">点击下载</a>
方式二:
@Override @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String upload = "E:\日常代码\springboot-01-yaml\src\main\resources\static\img\罗德.png"; String substring = upload.substring(upload.lastIndexOf("\")+1); resp.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(substring,"UTF-8")); FileInputStream inputStream = new FileInputStream(upload); int len = 0; byte[] buffer = new byte[1024]; ServletOutputStream outputStream = resp.getOutputStream(); while ((len = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } inputStream.close(); outputStream.close(); }