将文件下载到页面,实现文件下载功能
注意:实际开发中绝大部分情况都是将文件存储在单独的服务器,但是 也会有一些小文件可以存放在项目中,此处存放在项目目录下,其实代码大同小异,几乎无差别
直接上代码:
@RequestMapping("/down")
@ResponseBody
public void down(@RequestParam String id, HttpServletResponse response) throws FileNotFoundException, UnsupportedEncodingException {
// 下载本地文件
String fileName = new String("文件名.docx"); // 文件的默认保存名
// 读到流中
InputStream inStream =this.getClass().getResourceAsStream("/static/template/文件名.docx"); // 文件的存放路径
// 设置输出的格式
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "utf-8"));
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0) {
response.getOutputStream().write(b, 0, len);
}
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}