struts2实现的文件上传下载案例(二)、FileUpLoad文件的下载

简介: struts2实现的文件上传下载案例(二)、FileUpLoad文件的下载

开发思路:

1,要先数据库上查询到服务器上有的文件,遍历到list集合中在前端页面显示,给一个超链接提供下载,

2,建立和文件关联的输入流

3,建立和客户关联的输出流

4,一边读,一遍写

5,关闭输入输出流


开发步骤:

项目的整个目录结构还和文件上传的结构一致,


1,前端页面代码如下:

<h2>服务器文件、点击下载</h2>
    <hr>
      <s:iterator value="list" >
      <a href="${pageContext.request.contextPath }/file/download?id=<s:property value="file_id" />"><s:property value="file_name" /></a></br>
    </s:iterator>

2,后台Action代码为:

public String Download() {
    System.out.println("-----"+id);
    FileService service = new FileServiceImpl();
    Fileupload f = service.SelOneFile(id);
    // 1 在指定的目录下获取文件的绝对路径
    HttpServletRequest request = ServletActionContext.getRequest();
    ServletContext servletContext = request.getServletContext();
    System.out.println(f.getFile_path());
    String realPath = servletContext.getRealPath(f.getFile_path()+ f.getFile_name());
    // 2 建立和文件关联的输入流
    InputStream in = null;
    OutputStream out = null;
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try {
      in = new FileInputStream(realPath);
      bis = new BufferedInputStream(in);
      // 3 获取和client关联的输出流
      HttpServletResponse response = ServletActionContext.getResponse();
      // 告知浏览器文件的类型和使用方式
      response.setContentType("text/plain");
      response.setHeader("Content-Disposition", "attachment;filename="
          + URLEncoder.encode(f.getFile_name(), "utf-8"));
      out = response.getOutputStream();
      bos = new BufferedOutputStream(out);
    } catch (FileNotFoundException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // 4 一边读 一边写
    while (true) {
      int value;
      try {
        value = bis.read();
        if (value == -1) {
          break;
        }
        bos.write(value);
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    // 5 关闭流
    try {
      bis.close();
      bos.close();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // 注意:文件下载无需跳转
    return null;
  }

文件的下载需要先通过select * from t_file从数据库中查询到已经上传到服务器上的文件路径和文件名等。

然后点击下载的时候将所选文件的id传到后台,指定所要下载的单个文件,

然后通过文件输入输出流将文件复制到用户所在的电脑就完成了下载操作,


完整的项目源码地址为:

https://download.csdn.net/download/macwx/11260564


目录
相关文章
|
3月前
SpringMVC之文件上传和下载
【1月更文挑战第20天】SpringMVC之文件上传和下载
25 1
|
6天前
|
存储 前端开发 Java
SpringMVC 文件上传和下载
SpringMVC 文件上传和下载
|
Java
struts2实现的文件上传下载案例(一)、FileUpLoad
struts2实现的文件上传下载案例(一)、FileUpLoad
221 0
struts2实现的文件上传下载案例(一)、FileUpLoad
|
前端开发 Java Maven
SpringMVC文件上传与下载
SpringMVC文件上传与下载
|
Java 开发者
Struts2的文件下载 | 学习笔记
快速学习 Struts2的文件下载,介绍了 Struts2的文件下载系统机制, 以及在实际应用过程中如何使用。
73 0
|
前端开发 Java Maven
【SpringMVC 从 0 开始】文件上传和下载
【SpringMVC 从 0 开始】文件上传和下载
【SpringMVC 从 0 开始】文件上传和下载
springmvc文件上传和下载
springmvc文件上传和下载 使用ResponseEntity实现下载文件的功能 二:文件上传 2.1添加依赖: 2.2在SpringMVC的配置文件中添加配置: 2.3控制器方法:
180 0
springmvc文件上传和下载
|
前端开发 Java 程序员
SpringMVC:文件上传和下载
SpringMVC:文件上传和下载
|
缓存 Java Apache
Struts2实现单文件上传,多文件上传与下载(十)上
Struts2实现单文件上传,多文件上传与下载(十)
217 0
Struts2实现单文件上传,多文件上传与下载(十)上
|
前端开发 应用服务中间件
Struts2实现单文件上传,多文件上传与下载(十)中
Struts2实现单文件上传,多文件上传与下载(十)
Struts2实现单文件上传,多文件上传与下载(十)中

热门文章

最新文章