1 package org.springboot.controller; 2 3 import org.springboot.constant.Constant; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 import java.io.*; 10 import java.net.URLEncoder; 11 12 /** 13 * @Auther:GongXingRui 14 * @Date:2018/12/24 15 * @Description: 16 **/ 17 @Controller 18 public class FileDownload { 19 20 //实现Spring Boot 的文件下载功能,映射网址为/download 21 @RequestMapping("/download") 22 public String downloadFile(HttpServletRequest request, 23 HttpServletResponse response) throws UnsupportedEncodingException { 24 // String picPath = "C:/Temp/pic"; 25 String picPath = Constant.CONFIG_PROPERTIES.getProperty("download.path"); 26 27 // 获取指定目录下的第一个文件 28 File scFileDir = new File(picPath); 29 File TrxFiles[] = scFileDir.listFiles(); 30 System.out.println(TrxFiles[0]); 31 String fileName = TrxFiles[0].getName(); //下载的文件名 32 33 // 如果文件名不为空,则进行下载 34 if (fileName != null) { 35 //设置文件路径 36 File file = new File(picPath, fileName); 37 38 // 如果文件名存在,则进行下载 39 if (file.exists()) { 40 // 配置文件下载 41 response.setHeader("content-type", "application/octet-stream"); 42 response.setContentType("application/octet-stream"); 43 // 下载文件能正常显示中文 44 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); 45 46 // 实现文件下载 47 byte[] buffer = new byte[1024]; 48 FileInputStream fis = null; 49 BufferedInputStream bis = null; 50 try { 51 fis = new FileInputStream(file); 52 bis = new BufferedInputStream(fis); 53 OutputStream os = response.getOutputStream(); 54 int i = bis.read(buffer); 55 while (i != -1) { 56 os.write(buffer, 0, i); 57 i = bis.read(buffer); 58 } 59 System.out.println("Download the file successfully!"); 60 } 61 catch (Exception e) { 62 System.out.println("Download the file failed!"); 63 } 64 finally { 65 if (bis != null) { 66 try { 67 bis.close(); 68 } catch (IOException e) { 69 e.printStackTrace(); 70 } 71 } 72 if (fis != null) { 73 try { 74 fis.close(); 75 } catch (IOException e) { 76 e.printStackTrace(); 77 } 78 } 79 } 80 } 81 } 82 return null; 83 } 84 85 86 }