springmvc 文件下载实现

xiaoxiao2021-02-28  20

1、下载按钮,title是文件在项目中存储的名称

<span><a href="javascript:void(0);" title="模板.xlsx" class="m_but bg_b download_model">模板下载</a></span>

2、js处理,新建form表单提交

//导入模板下载 $(".download_model").bind("click",function(){ var form = document.createElement("form"); //创建一个 form document.body.appendChild(form);//添加到 body 中 var input = document.createElement("input"); //创建一个输入 // 设置相应参数 input.type = "text"; input.name = "fileName"; input.value = $(this).attr("title"); form.appendChild(input); form.method = "POST"; //form 的提交方式 form.action = "download_model";//form 提交路径 form.submit(); //对该 form 执行提交 form.remove(); });

3、后台处理

/** * 导入模板下载 * * @param req * @param model * @param response */ @SuppressWarnings("rawtypes") @RequestMapping(value = "/download_model") private void downloadModel(HttpServletRequest req, Model model, HttpServletResponse response) throws Exception { Map<String, Object> params = builderParams(req, null); String fileName = (String) params.get("fileName");// 文件名 String path = req.getSession().getServletContext().getRealPath("/download");// 此文件夹在webapp下 FileDownLoadUtil.downLoad(fileName, path, req, response); } /** * 文件下载工具类 * */ public class FileDownLoadUtil { public static void downLoad(String fileName, String filePath, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("UTF-8"); java.io.BufferedInputStream bis = null; java.io.BufferedOutputStream bos = null; String downloadPath = filePath + "/" + fileName; File file = new File(downloadPath); try { long fileLength = file.length(); response.setContentType("application/x-msdownload;"); response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1")); response.setHeader("Content-Length", String.valueOf(fileLength)); bis = new BufferedInputStream(new FileInputStream(downloadPath)); //bis = new BufferedInputStream(new ByteArrayInputStream("testtest".getBytes("UTF-8"))); 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); } } catch (Exception e) { throw new Exception(e); } finally { if (bis != null) bis.close(); if (bos != null){ bos.flush(); bos.close(); } } } }
转载请注明原文地址: https://www.6miu.com/read-2602644.html

最新回复(0)