技术文章 > java >  java下载 > 正文

java下载文件

小妮浅浅

虽然我们平时会直接用一些软件辅助文件的下载,那么在学习了一段时间的java基础知识后,可以尝试着用其中的方法解决文件的下载问题。出于操作的流畅和文件下载的安全性考虑,这里总结了三种方法:IO流、RequestDispatcher和下载到页面。下面就这些方法展开具体分析。

1.IO流的方式下载

public HttpServletResponse download(String path, HttpServletResponse response) {
        try {
            // path是指欲下载的文件的路径。
            File file = new File(path);
            // 取得文件名。
            String filename = file.getName();
            // 取得文件的后缀名。
            String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
 
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
}

2.采用RequestDispatcher的方式进行

jsp页面中添加如下代码:

           <%
      response.setContentType("application/x-download");//设置为下载application/x-download
      String filedownload = "/要下载的文件名";//即将下载的文件的相对路径
      String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
      filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
    
      try
      {
          RequestDispatcher dis = application.getRequestDispatcher(filedownload);
          if(dis!= null)
          {
              dis.forward(request,response);
          }
          response.flushBuffer();
      }
      catch(Exception e)
      {
          e.printStackTrace();
      }
      finally
      {
    
      }
%>

3.将文件下载到页面

注意:实际开发中绝大部分情况都是将文件存储在单独的服务器,但是 也会有一些小文件可以存放在项目中,此处存放在项目目录下,其实代码大同小异,几乎无差别。

           <%
      response.setContentType("application/x-download");//设置为下载application/x-download
      String filedownload = "/要下载的文件名";//即将下载的文件的相对路径
      String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
      filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
    
      try
      {
          RequestDispatcher dis = application.getRequestDispatcher(filedownload);
          if(dis!= null)
          {
              dis.forward(request,response);
          }
          response.flushBuffer();
      }
      catch(Exception e)
      {
          e.printStackTrace();
      }
      finally
      {
    
      }
%>

以上就是在java中下载文件的三种方法,有这类需求的小伙伴,可以试着用java的知识来对文件的下载进行操作。看完本篇文章后,就可以运行代码试试成果了。更多Java学习指路:java下载

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java程序的结构和使用
 javaEE是什么
 java下载
 java游戏下载
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
推荐视频
视频教程分类