求助:我的servlet下载zip数据总是无法弹出下载窗口,怎么解决?? 400 报错
最近变问题宝宝了。。。
上相关代码:
js:dataParams是请求参数
$.ajax( { url : "../monitorlog.action", contentType : "application/x-www-form-urlencoded; charset=utf-8", type : 'get', data : dataParams, error : function(XMLHttpRequest, textStatus, errorThrown) { showError(XMLHttpRequest.responseText); } });
后台:
resp.setContentType("application/vnd.ms-excel"); resp.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName).getBytes(), "ISO-8859-1")); OutputStream out = resp.getOutputStream(); ExportTemplet.downloadLogs(files, out); //--------------------------------------- ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(os, 1024)); try{ for(File f:files){ zos.putNextEntry(new ZipEntry(f.getName())); System.out.println(f.length()); FileInputStream fis = new FileInputStream(f); byte[] buffer = new byte[1024]; int r = 0; while ((r = fis.read(buffer)) != -1) { zos.write(buffer, 0, r); } fis.close(); } zos.flush(); zos.close();从开发工具里看到页面请求相应为
你的 content-type 不要设置为 excel,这样有些浏览器会直接打开,可设置为 application/octet-stream
######
resp.setContentType("application/zip"); resp.setHeader("Content-Disposition", "attachment; filename="DATA.ZIP"");######
这个ajax可以下载文件?求教啊。
个人一般A链接或者append一个隐藏的iframe(src属性指向文件地址),在后台自己读一遍除非特殊需求,否则很少这样做吧
######谢谢楼上各位,在浏览器试了下直接打开请求的url,能弹出下载框,说明是$.ajax的问题...版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。