您的位置:首页 > 其它

Ajax处理下载文件response没有反应

2017-05-26 16:19 716 查看
要实现下载Excel的功能,思路很简单,后台servlet根据数据库的数据生成Excel保存在指定位置,然后保存到response的输入流中,最后将零时的Excel删除:

private void download(String path, HttpServletResponse response) throws IOException {

//path是指欲下载的文件的路径

File file = new File(path);

//取得文件名

String filename = file.getName();

//以流的形式下载文件

InputStream fis = new BufferedInputStream(new FileInputStream(path));

byte[] buffer = new byte[fis.available()];

fis.read(buffer);

fis.close();

//清空response

response.reset();

//设置response的Header

response.addHeader("Content-disposition", "attachment;filename="+new String(filename.getBytes()));

OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

response.setContentType("application/vnd.ms-excel;charset=UTF-8");

response.setContentType("application/x-msdownload");

toClient.write(buffer);

toClient.flush();

toClient.close();

}

想法很好,但是现实很残酷,点了下载按钮,一点反应都没! 
最后网上查了下,发现问题是ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的。 
解决方案,不用ajax:

window.location.href=regionURL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: