java文件下载,
分享于 点击 1354 次 点评:66
java文件下载,
文件上传之后有时候需要添加下载功能,但html5提供的下载方式在web项目下不实用,当然也可能是我用的方法不对,在这里我介绍一种我的解决方式
首先是前端页面文件下载部分的代码片段,这里引用了
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
这个jstl应该都知道在哪引用就不详细介绍了
代码片段前端
<div class="case"> <table> <c:forEach items="${list}" var="li"> <tr> <td style="width: 150px;margin-right: 20px"><a href="/content/download?filePath=${li.downName}" download="${li.downName}">${li.title}</a></td> <td style="width: 80px;margin-right: 10px;text-align: center;">${li.downType}</td> <td style="width: 420px;margin-right: 10px;text-align: center;">${li.introduce}</td> <td style="width: 100px;margin-right: 10px;text-align: center"><fmt:formatDate value="${li.createTime}"/></td> <td style="width: 80px;text-align: center"><a href="/content/download?filePath=${li.downName}" download="${li.downName}">点击下载</a></td> </tr> </c:forEach> </table> <div class="space_hx"> </div>
后台部分
API下载的接口 返回值一定要为null
/** * 文件下载 * @param request * @param response * @param filePath * @return */ @RequestMapping("/download") public String download( HttpServletRequest request, HttpServletResponse response, String filePath){ try { //获取文件名 String fileName = filePath.substring(filePath.lastIndexOf("/")+1); System.out.println(filePath); response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); //处理下载弹出框名字的编码问题 response.setHeader("Content-Disposition", "attachment;fileName=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" )); //获取文件的下载路径 String path = request.getSession().getServletContext().getRealPath(filePath); System.out.println(path); //利用输入输出流对文件进行下载 InputStream inputStream = new FileInputStream(new File(path));
//文件传输大小OutputStream os = response.getOutputStream(); byte[] b = new byte[2048]; int length; while ((length = inputStream.read(b)) > 0) { os.write(b, 0, length); } // 关闭。 os.close(); inputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 返回值为空 return null;}
下载功能这样就实现了,
下面是我的实体类,怕看html的内容不明白downName是什么
package com.yfsoft.pojo; import java.util.Date; public class DownloadBean { private Integer downId; private String downType; private String downPath; private Date createTime; private String introduce; private String title; private String downName; public String getDownName() { return downName; } public void setDownName(String downName) { this.downName = downName; } public Integer getDownId() { return downId; } public void setDownId(Integer downId) { this.downId = downId; } public String getDownType() { return downType; } public void setDownType(String downType) { this.downType = downType; } public String getDownPath() { return downPath; } public void setDownPath(String downPath) { this.downPath = downPath; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public String getIntroduce() { return introduce; } public void setIntroduce(String introduce) { this.introduce = introduce; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
相关文章
- 暂无相关文章
用户点评