js实现不刷新文件下载功能
2015-11-16 10:50
489 查看
js实现不刷新文件下载功能
网页重定向构建form表单
网页重定向
$('#downloadBtn').click(function(){ var list =[]; $("#List option:selected").each(function(){ list.push($(this).val()); }); window.open(ctx+"/Stats/StatsDownload"; });
构建form表单
$('#downloadBtn').click(function() { var form = $("<form>");// 定义一个form表单 form.attr("style", "display:none"); form.attr("target", ""); form.attr("method", "post"); form.attr("action", ctx + "/Stats/StatsDownload"); $("body").append(form);// 将表单放置在web中 form.submit();// 表单提交 });
后台java代码
@ResponseBody @RequestMapping("/StatsDownload") public void StatsDownload(StatsReqBean StatsReqBean, HttpServletResponse response) { try { StatsReqBean.setOrgId(UserUtils.getOrgId()); OrgProductEmpStatsResBean eBean = productStatsServiceImpl.getOrgProductEmpStatsResBean(StatsReqBean); List<ProductEmpStatsResBean> list = eBean.getProductEmpStatsResBeanList(); List<String> productIdList = StatsReqBean.getProductIdList(); List<Object[]> exportList = new ArrayList<Object[]>(); String[] columns = {"xxxx", "xxxx", "xxxx", "xxxx"}; int[] columnWidths = {20, 20, 20, 30}; //redis取出為空時,初始化一個對象扔給前台 if(list == null){ list = new ArrayList<ProductEmpStatsResBean>(); }else{ if(productIdList != null &&productIdList.size() != 0){ List<ProductEmpStatsResBean> li = new ArrayList<ProductEmpStatsResBean>(); for(String productId:productIdList){ for(ProductEmpStatsResBean pes:list){ if(pes.getProductId().equals(productId)){ li.add(pes); } } } list = li; } } for(ProductEmpStatsResBean p:list ){ Object[] object = new Object[4]; // object[0] = p.getProductId(); object[0] = p.getBriefName(); object[1] = p.getGroupName(); object[2] = p.getTotalOrderNum(); object[3] = p.getTotalSales(); exportList.add(object); } ExportExcel exportExcel = new ExportExcel(columns, true, exportList); exportExcel.setColumnWidths(columnWidths); Workbook workbook = exportExcel.toExcel(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); File file2 = new File("d://" + PRODUCT_EMP_STAT_FILE_NAME + sdf.format(new Date())+".xlsx"); String[] paths = file2.getAbsolutePath().replaceAll("\\\\", "/").split("/"); String filename = paths[paths.length - 1]; FileOutputStream fos = new FileOutputStream(file2); workbook.write(fos); fos.flush(); fos.close(); response.setContentLength((int) file2.length()); response.setContentType("application/octet-stream; charset=utf-8"); // response.setHeader告诉浏览器以什么方式打开 // 假如文件名称是中文则要使用 URLEncoder.encode()编码 // 否则直接使用response.setHeader("content-disposition", // "attachment;filename=" + filename);即可 response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); OutputStream out = response.getOutputStream(); out.write(FileUtils.readFileToByteArray(file2)); out.flush(); out.close(); file2.delete(); // json.setCode(1); // json.setMessage(SUCCESS); } catch (Exception e) { e.printStackTrace(); LOGGER.error("download file error, error=[{}]", e.getMessage()); } // return json; }
相关文章推荐
- 跟我学习javascript的var预解析与函数声明提升
- js中的target与currentTarget的区别<转>
- week11---11月17日 JS基础(六)
- textarea输入框限制字数(JS)
- js替换所有img的值
- 常规功能和模块自定义系统 (cfcmms)—015模块自定义概述(2权限)
- 图解javascript this指向什么?
- 跟我学习javascript的全局变量
- JS实现动态提示文本框可输入剩余字数(类似发表微博数字提示)
- 浅析JavaScript访问对象属性和方法及区别
- 跟我学习javascript的基本类型和引用类型
- JavaScript 数组字符互转
- JS开发HTML5游戏《神奇的六边形》(三)
- js 对html的基本操作
- JS 实现GOOGLE地图线路规划
- js 使用积累
- ***js常用方法汇总(源自实际中的项目)
- js之触屏事件篇
- 关于JavaScript继承的那些事
- js之日期篇