文件下载:springMVC中使用ajax请求文件下载问题

近期在学习springMVC与easyui的过程中遇到的文件下载问题。在springMVC中下载文件,如下载图片、导出数据报表时。如果使用ajax发送请求,不能直接解析获取response.getOutputStream()中的数据。

后台Controller代码:

@RequestMapping("/export")
	public void exportUser(HttpServletResponse response,@RequestParam("ids") List<Integer>   ids){
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		String formatDate = format.format(new Date());
		response.setHeader("content-disposition", "attachment;filename="+formatDate+".xls");
		if(ids.size()==0){
			ids=null;
		}
		List<User> list = userService.queryByPageAndIds(null, null, ids).getRows();
		try {
			userService.exportUsers(response.getOutputStream(), list, User.class);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
由于前台直接使用ajax请求Controller无法正确获得结果,所以想到了使用JS中window对象的location.href方法请求Controller

前台easyui中代码

		//初始化导出按钮
  		$("#userDatagridExportBtn").linkbutton({
  			text:"数据导出",
  			onClick:function(){
  				//获取数据表格中选中的数据
  				var arr=$("#userDatagrid").datagrid("getSelections");
  				var ids=[];
  				for(var i=0;i<arr.length;i++){
  					ids[i]=arr[i].id;
  				}
  						    		//$.get("${pageContext.request.contextPath}/user/export.do","ids="+ids);
  				location.href="${pageContext.request.contextPath}/user/export.do?ids="+ids;
  				$("#userDatagrid").datagrid("reload");
  			}

});

由于Controller中使用了response的outPutStream作为响应方式,所有使用location.href发起请求时也不是刷新页面,文件也能正常下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值