欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java文件下载,

来源: javaer 分享于  点击 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">&nbsp;</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;
    }
}

相关文章

    暂无相关文章
相关栏目:

用户点评