求助:我的servlet下载zip数据总是无法弹出下载窗口,怎么解决?

落落的月 发布于 2012/11/26 15:54
阅读 723
收藏 0

最近变问题宝宝了。。。

上相关代码:

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();
从开发工具里看到页面请求相应为


加载中
0
红薯
红薯
你的 content-type 不要设置为 excel,这样有些浏览器会直接打开,可设置为 application/octet-stream
0
_DeepBlue
_DeepBlue
resp.setContentType("application/zip");
resp.setHeader("Content-Disposition", "attachment; filename=\"DATA.ZIP\"");
0
柳倾城
柳倾城

这个ajax可以下载文件?求教啊。

个人一般A链接或者append一个隐藏的iframe(src属性指向文件地址),在后台自己读一遍除非特殊需求,否则很少这样做吧

0
落落的月
落落的月
谢谢楼上各位,在浏览器试了下直接打开请求的url,能弹出下载框,说明是$.ajax的问题...
返回顶部
顶部