您的当前位置:首页正文

java下载文件

2024-08-01 来源:化拓教育网

本教程操作环境:windows7系统、java10版,DELL G3电脑。

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文件批量下载不打包怎么办

使用IO流和ZipOutputStream。根据查询太平洋电脑网显示。1、可以通过使用IO流和ZipOutputStream类来实现下载多个文件并打包的功能。2、Java是一门面向对象的编程语言,不仅吸收C加加语言的各种优点,还摒弃C加加里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

java通过url来下载的文件如何将默认文件名不是路径

java软件如何设置保存文件的默认路径?右键单击“我的电脑”、“属性”、“高级”、“环境变量”,在“环境变量”中创建新的变量名classpath。变量值:。;丙:程序文件Javalib丙:程序文件Javalib程序文件Java变量值的末尾。程序文件Java宾,注意两条路径之间的额外符号。如何填写URL地址?正确的URL写法是协议...

下载电脑java时,下载失败,该怎么办?

检查网络连接:确保你的网络连接正常,尝试重新下载Java文件,有时下载失败可能是因为网络连接不稳定或中断导致的。清除浏览器缓存:如果是通过浏览器下载Java,尝试清除浏览器的缓存和Cookie,然后重新下载。使用其他浏览器或下载工具:如果某个浏览器下载失败,可以尝试换用其他浏览器,或者使用专门的下载工具...

怎样编一个能实现文件下载功能的JAVA程序

1、web.xml文件中增加 &lt;mime-mapping&gt; &lt;extension&gt;doc&lt;/extension&gt; &lt;mime-type&gt;application/vnd.ms-word&lt;/mime-type&gt; &lt;/mime-mapping&gt; 2、程序如下:&lt;%@page language="java" import="java.net.*" pageEncoding="gb2312"%&gt; &lt; response.setContentType("application/x-download");//设置为下载a...

java文件写入后下载下来为啥是压缩包

该原因是在写入文件时使用了压缩算法,或者在下载文件时使用了压缩格式。如果在写入文件时使用了压缩算法,例如使用GZIPOutputStream或ZipOutputStream等类来写入文件,那么写入的文件就是压缩文件。在下载文件时,如果使用了压缩格式,例如ZIP或GZIP等格式,那么下载下来的文件就是压缩包。

java怎么通过链接下载文件,然后保存到指定位置?

回答:点击下载,其实就是访问文件路径,通过流读取,然后再指定文件保存位置.还是通过流保存. file(连接路径)&gt;&gt;input&gt;&gt;out&gt;&gt;file(保存位置)

用java实现文件的上传与下载

1.下载简单,无非是把服务器上的文件或者数据库中的BLob(或其他二进制型),用流读出来,然后写到客户端即可,要注意 ContentType。2.上传,可以用Apache Commons Upload等开源工具,或者自己写:form要用enctype="multipart/form-data"然后服务器端也是用IO把客户端提交的文件流读入,然后写到服务器的...

怎样通过java实现服务器上文件下载?

包,模拟一个Get请求,发送到网址172.16.30.230/文件地址。这个文件地址不能是E/Map/123.txt,必须是暴露在服务器中的应用里的。就像你写的应用里的一个jsp页面的目录。成功发送get请求后,就会得到response,里面有流。就是你下载的文件,然后可以通过FileOutputStream,指定你输出目录,写到磁盘上。

javaweb在linux下部署,下载文件报403错误

javaweb在linux下部署,下载文件报403错误三步解决方法。1、根据查询相关公开信息:打开项目结构。2、打开工件(即Artifacts)并点开+号选择归档(Archive)选择要打包的那个模块点击应用和确定。3、构建(Build)工件=生成war包。4、bulid之后就会生成war包了,此时到目录里就可以看到war包了,一般在out的...

JAVA 如何一次下载多个文件

创建多线程下载 如果说方便下载,是打包再下载 ~~~