怎么获取浏览器的文件下载路径

ajax 不支持在Response头返回excel文件,因为ajax返回头类型是字符不支持文件类型

解决一)Ajax + window.location.hrefstep1:导出Excel文件step2:将文件存入自建的临时文件夹中step3:向前台返回文件名step4:ajax success 方法中通过window.location.href ="下载控制器名/"+文件名,去下载文件step5:下载成功后清除临时文件参考代码```/*** 导出excel文件* * @param model : ExcelDUModel*/@RequestMapping(value="/eexcel")@ResponseBodypublic ResponseModel exportExcel(@RequestBody ExcelDUModel model, HttpServletRequest request) {try {   List> books = bookDao.exportExcel(new RBACModel(model.getParam(),rbacService.rbacSQLByTid()));// 自定义Excel生成工具类HSSFWorkbook workbook = ExcelUtils.createExcelWorkbook(books, "Book", model.getHeaders(), model.getTargets());// 创建文件名和路径String fileName = DateUtil.timeStamp() + ".xls";// Constant.EXCEL_BUFFER_URL 文件名常量(/WEB-INF/buffer/excel/)String path = Constant.EXCEL_BUFFER_URL + fileName;// 生成临时文件request.getServletContext().getRealPath() 获取工程根目录FileOutputStream fos = new FileOutputStream(request.getServletContext().getRealPath(path));// 将Excel文件写入workbook.write(fos);fos.flush();fos.close();// 自定义信息类return new ResponseModel(0, fileName, null);} catch (Exception e) {e.printStackTrace();return new ResponseModel(1, "文件生成失败");} }//前台success: function(data){if (data.state == 0) {alert("成功!");window.location.href = "${ctx}/enclosure/download/bexcel/"+data.message;}   },```二)超链接或者是表单step1:生成excel文件step2:放入Response返回流,```response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment;filename=" + 文件名+ ".xls");response.setContentLength(bytes.length);response.getOutputStream().write(bytes);response.getOutputStream().flush();response.getOutputStream().close();```step3 前台直接会有下载,而且控制器不用做特别处理。缺点是数据没有ajax传输方便


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部