@RequestMapping(value="exportExcel")
public void exportExcle(HttpServletRequest request, HttpServletResponse response) throws Exception{
String realPath = request.getSession().getServletContext().getRealPath("/");
File filePath = new File(realPath + "/tempExclePath");
String path = filePath+"/"+key+".xlsx";
final File file = new File(path);
fileName = file.getName();
InputStream inputStream;
try {
inputStream = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
response.reset();
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
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();
}finally{
if(file.exists()){ // after download, delete the file on server
(new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
try {
file.delete();
} catch (Exception e) {
}
}
}
})).start();
}
}
}
注意:使用response 方式下载文件,不能使用ajax 请求,否则无反应