1.用隐藏的form提交
页面如下:
$scope.postUrl = function(URL, PARAMTERS){
//创建form表单
var temp_form = document.createElement("form");
temp_form.action = URL;
//如需打开新窗口,form的target属性要设置为'_blank'
temp_form.target = "_self";
temp_form.method = "post";
temp_form.style.display = "none";
//添加参数
for (var item in PARAMTERS) {
var opt = document.createElement("input");
opt.name = item;
opt.value = PARAMTERS[item];
console.log("参数",item);
temp_form.appendChild(opt);
}
document.body.appendChild(temp_form);
//提交数据
temp_form.submit();
}
调用:
$scope.searchParams = {}是个对象
$scope.postUrl(CONTEXT.SYSTEM + "/order/exportOrderInfo", $scope.searchParams);
后台:
public void exportOrderInfo(@Validated QueryGoodsOrderVo param,HttpServletRequest request,HttpServletResponse response){
String fileName = "订单信息导出.xls"; // 设置下载文件名字
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
try {
response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(fileName, "utf-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
InputStream in = webOrderService.exportOrderInfo(param);
System.out.println(in);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(in);
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}