public void downloadFile(HttpServletRequest request,HttpServletResponse response) {
String filePath = "temp.xml";
String handKml = (String) request.getParameter("handKml");
if(StringUtils.isBlank(handKml)){
handKml = "没有内容";
}
try {
FileWriter fw = new FileWriter(filePath);
fw.write(handKml);
fw.flush();
fw.close();
String fileName = "temp.xml"; //文件名,输出到用户的下载对话框
//打开指定文件的流信息
FileInputStream fs = null;
fs = new FileInputStream(new File(filePath));
//设置响应头和保存文件名
response.setContentType("text/xml");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName);
//写出流信息
int b = 0;
PrintWriter out = response.getWriter();
while((b=fs.read())!=-1) {
out.write(b);
}
fs.close();
out.close();
}catch(Exception e) {
e.printStackTrace();
}
}
其实就是将文件 以流的方式传递给返回,浏览器会自动接收提示保存文件。使用ajax接收是不行的。
不同的文件要设置不同的响应头:
eg:
response.setContentType("text/xml");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName);