SpringMVC下载文件(不是Spring下载文件)
来源:互联网 发布:mac浆果色口红 编辑:程序博客网 时间:2024/05/16 10:54
参考资料:
原理篇:http://www.csdn123.com/html/blogs/20130611/21318.htm
实战篇:http://zwtlong.iteye.com/blog/1068532
http://mayday85.iteye.com/blog/1622445
综合篇:http://blog.csdn.net/wlsyn/article/details/10195193
代码
前台:
function qryPayPlanDownloadData(){ var params = { "fromDate": $("#fromDate").val(), "toDate": $("#toDate").val(), "productName": $("#name").val(), "consistencyFlag": $("#flag").val() }; var requestUrl = url('action-mapping/download'); var _form = buildRequestForm(requestUrl, params); $("body").append(_form); _form.submit();}function buildRequestForm(requestUrl, jsonParam) { var _form = $("<form>"); _form.attr("style", "display:none"); _form.attr("target", ""); _form.attr("method", "post"); _form.attr("action", requestUrl); $.each(jsonParam, function(k, v){ var _input = $("<input>"); _input.attr("type","hidden"); _input.attr("name",k); _input.attr("value", v); _form.append(_input); }); return _form;}
后台:
Action
@RequestMapping(value = "/download", method = RequestMethod.POST) public DocumentExcelView queryDownload() throws Exception { DocumentExcelView viewExcel = new DocumentExcelView(serviceProvider); return viewExcel; }
extension
/** * Created by dalin. */public class DocumentExcelView extends AbstractExcelView { private ServiceProvider serviceProvider; public DocumentExcelView(ServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; } @Override protected void buildExcelDocument(Map<String, Object> obj, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws IOException { HSSFSheet sheet = workbook.createSheet("产品"); sheet.setDefaultColumnWidth(12); //设置文件属性 HSSFCell cell = getCell(sheet, 0, 0); setText(cell, "产品"); cell = getCell(sheet, 1, 0); cell.setCellValue("生成日期:" + new Date().toString()); HSSFCellStyle dateStyle = workbook.createCellStyle(); dateStyle.setBottomBorderColor(HSSFCellStyle.BORDER_MEDIUM_DASHED); //设置表头 getCell(sheet, 2, 0).setCellValue("名称"); getCell(sheet, 2, 1).setCellValue("特征"); getCell(sheet, 2, 2).setCellValue("值1"); getCell(sheet, 2, 3).setCellValue("值2"); getCell(sheet, 2, 4).setCellValue("是否一致"); getCell(sheet, 2, 5).setCellValue("日期");// dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy")); //构造文件 createFileData(sheet, request, 3); Logger.info(this, "create excel file seccessed.[snapshotDate:%s]" + new Date()); String filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString() + ".xls"; Logger.info(this, String.format("download Excel name:%s.[snapshotDate:%s]", filename, new Date()));// filename = encodeFilename(filename, request);//处理中文文件名 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=" + filename); OutputStream ouputStream = null; try { ouputStream = response.getOutputStream(); workbook.write(ouputStream); } catch (IOException e) { Logger.error(this, "unknow Excetpion while create download Excel.[snapshotDate:%s]" + new Date(), e); e.printStackTrace(); } finally { if (ouputStream != null) { ouputStream.flush(); ouputStream.close(); } } } /** * 构造下载文件 * * @param sheet * @param request * @param startRow */ public void createFileData(HSSFSheet sheet, HttpServletRequest request, int startRow) { Date fromDate = DateUtils.parse(request.getParameter("fromDate")); Date toDate = DateUtils.parse(request.getParameter("toDate")); String name = request.getParameter("name"); String flag = request.getParameter("flag"); List<DTO> list = serviceProvider.getService().queryData(fromDate, toDate, name, flag); if (CollectionUtils.isEmpty(list)) { Logger.info(this, "there is no data while download Excel.[snapshotDate:%s]" + new Date()); return; } for (int row = 0; row < list.size(); row++) { getCell(sheet, row + startRow, 0).setCellValue(list.get(row).getName()); getCell(sheet, row + startRow, 1).setCellValue(list.get(row).getFeatures()); getCell(sheet, row + startRow, 2).setCellValue(list.get(row).getbValue()); getCell(sheet, row + startRow, 3).setCellValue(list.get(row).getcValue()); getCell(sheet, row + startRow, 4).setCellValue(list.get(row).getFlag()); getCell(sheet, row + startRow, 5).setCellValue(DateUtils.formatDateString(list.get(row).getCreatedAt())); } } /** * 设置下载文件中文件的名称 * * @param filename * @param request * @return */// public static String encodeFilename(String filename, HttpServletRequest request) {// /**// * 获取客户端浏览器和操作系统信息// * 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar)// * 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6// */// String agent = request.getHeader("USER-AGENT");// try {// if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {// String newFileName = URLEncoder.encode(filename, "UTF-8");// newFileName = StringUtils.replace(newFileName, "+", "%20");// if (newFileName.length() > 150) {// newFileName = new String(filename.getBytes("GB2312"), "ISO8859-1");// newFileName = StringUtils.replace(newFileName, " ", "%20");// }// return newFileName;// }// if ((agent != null) && (-1 != agent.indexOf("Mozilla")))// return MimeUtility.encodeText(filename, "UTF-8", "B");//// return filename;// } catch (Exception ex) {// return filename;// }// }}
1.MimeUtility编译出错
2.ouputStream.close();加上的话不应想下载,但是报错。
解决中......
0 0
- SpringMVC下载文件(不是Spring下载文件)
- SpringMVC文件下载(一)
- SpringMVC—文件下载
- SpringMvc下载excel文件
- SpringMvc 通用文件下载
- springMVC 文件下载
- SpringMvc下载excel文件
- springmvc下载文件
- springmvc 文件下载
- springMVC 文件下载
- SpringMvc下载excel文件
- springMVC文件下载
- springMVC下载文件
- SpringMVC文件下载
- SpringMvc下载文件
- SpringMvc 上传/下载 文件
- SpringMVC上传、下载文件
- SpringMVC 实现文件下载
- leetcode由易入难——【1】Add Binary
- 如何获取自己的SSL证书
- CPassword弱密码生成器1.0
- jquery获取浏览器类型和版本号
- CreateThread简单那多线程编程
- SpringMVC下载文件(不是Spring下载文件)
- 网络基本概念之TCP, UDP, 单播(Unicast), 组播(Multicast)
- Ember.js实战
- Django+MySQL安装配置详解(Linux)[更新为1.8.2版]
- 美国市场上15门最赚钱的编程语言
- @Transactional注解工作原理
- 面试题总结3
- Linux中的特殊权限
- 一个更容易扩展,根据用户个人信息生成密码弱口令生成器 genpAss