本文纯属转载,主要是为了方便后续参考和继续使用,转载自博客Spring Boot项目实现下载项目根目录下指定目录(doc)里的文件。
代码参考如下:
一、接收页面下载的请求,开始下载项目中的文件
@RequestMapping("downloadFile")
@ResponseBody
public void Download(HttpServletResponse response) {
String fileName = "ceshi1.txt";
String result = FileUtil.downloadFile(response, fileName);
System.out.println(result);
}
二、FileUtil.java工具类
注意导包的时候,使用的是import org.springframework.util.ResourceUtils
/**
* 下载项目根目录下doc下的文件
* @param response response
* @param fileName 文件名
* @return 返回结果 成功或者文件不存在
*/
public static String downloadFile(HttpServletResponse response, String fileName) {
File path = null;
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
try {
response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
byte[] buff = new byte[1024];
BufferedInputStream bis = null;
OutputStream os = null;
try {
path = new File(ResourceUtils.getURL("classpath:").getPath());
os = response.getOutputStream();
bis = new BufferedInputStream(new FileInputStream(new File(path + "/doc/" + fileName)));
int i = bis.read(buff);
while (i != -1) {
os.write(buff, 0, buff.length);
os.flush();
i = bis.read(buff);
}
} catch (FileNotFoundException e1) {
//e1.getMessage()+"系统找不到指定的文件";
return "系统找不到指定的文件";
}catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "success";
}