@RequestMapping(value = "download")
public void fileDownload_servlet(HttpServletRequest request, HttpServletResponse response) {
filesDownload_stream(request, response, "D:/report/PreliminaryReport.doc");
}
public void filesDownload_stream(HttpServletRequest request, HttpServletResponse response, String filePath) {
//get server path (real path)
// 用相对路径时打开该注释
//String realPath = request.getSession().getServletContext().getRealPath(filePath);
File file = new File(filePath);
String filenames = file.getName();
InputStream inputStream;
try {
inputStream = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
response.reset();
// 先去掉文件名称中的空格,然后转换编码格式为utf-8,保证不出现乱码,这个文件名称用于浏览器的下载框中自动显示的文件名
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filenames.replaceAll(" ", "").getBytes("utf-8"), "iso8859-1"));
response.addHeader("Content-Length", "" + file.length());
OutputStream os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
os.write(buffer);// 输出文件
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}