JQuery的ajax函数的返回类型只
有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js
生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。
function fileModelDownload() {var form = $("
"); //定义一个form表单form.attr('style', 'display:none'); //在form表单中添加查询参数form.attr('target', '');form.attr('method', 'post');form.attr('action', "fupUser/fileModelDownload.do");var input1 = $('');input1.attr('type', 'hidden');input1.attr('name', 'strUrl');$('body').append(form); //将表单放置在web中form.append(input1); //将查询参数控件提交到表单上form.submit();}
后台
// 文件模板下载
@RequestMapping("/fupUser/fileModelDownload")
@ResponseBody
public void fileModelDownload(HttpServletRequest request, HttpServletResponse response) throws IOException{
File file = new File(request.getSession().getServletContext().getRealPath("/") + "/download/fupUser.txt");
if(file.exists()){
OutputStream os = response.getOutputStream();
try {
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=fupUser.txt");
response.setContentType("application/octet-stream; charset=utf-8");
os.write(FileUtils.readFileToByteArray(file));
os.flush();
} finally {
if (os != null) {
os.close();
}
}
}
}
网友评论