java下载文件功能怎么实现

图标

豆瓜

豆瓜网

豆瓜网专栏

首发
豆瓜 图标 2020-10-17 00:47:49

第一个实现 java下载文件功能方法:


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;

  }


  public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {

    // 下载本地文件

    String fileName = "Operator.doc".toString(); // 文件的默认保存名

    // 读到流中

    InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径

    // 设置输出的格式

    response.reset();

    response.setContentType("bin");

    response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

    // 循环取出流中的数据

    byte[] b = new byte[100];

    int len;

    try {

      while ((len = inStream.read(b)) > 0)

        response.getOutputStream().write(b, 0, len);

      inStream.close();

    } catch (IOException e) {

      e.printStackTrace();

    }

  }


  public void downloadNet(HttpServletResponse response) throws MalformedURLException {

    // 下载网络文件

    int bytesum = 0;

    int byteread = 0;


    URL url = new URL("windine.blogdriver.com/logo.gif");


    try {

      URLConnection conn = url.openConnection();

      InputStream inStream = conn.getInputStream();

      FileOutputStream fs = new FileOutputStream("c:/abc.gif");


      byte[] buffer = new byte[1204];

      int length;

      while ((byteread = inStream.read(buffer)) != -1) {

        bytesum += byteread;

        System.out.println(bytesum);

        fs.write(buffer, 0, byteread);

      }

    } catch (FileNotFoundException e) {

      e.printStackTrace();

    } catch (IOException e) {

      e.printStackTrace();

    }

  }


第二个实现 java下载文件功能方法:


public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {

    File f = new File(filePath);

    if (!f.exists()) {

      response.sendError(404, "File not found!");

      return;

    }

    BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));

    byte[] buf = new byte[1024];

    int len = 0;


    response.reset(); // 非常重要

    if (isOnLine) { // 在线打开方式

      URL u = new URL("file:///" + filePath);

      response.setContentType(u.openConnection().getContentType());

      response.setHeader("Content-Disposition", "inline; filename=" + f.getName());

      // 文件名应该编码成UTF-8

    } else { // 纯下载方式

      response.setContentType("application/x-msdownload");

      response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());

    }

    OutputStream out = response.getOutputStream();

    while ((len = br.read(buf)) > 0)

      out.write(buf, 0, len);

    br.close();

    out.close();

  }


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

java下载文件
图标 图标

豆瓜

豆瓜网

豆瓜网专栏

  • java下载文件功能怎么实现

    图标
    豆瓜 图标 · 今天 00:47:49 · 0浏览
  • 正则表达式 数字的表达式

    图标
    豆瓜 图标 · 今天 00:46:16 · 10浏览
  • rtsp协议之说明

    图标
    豆瓜 图标 · 今天 00:45:30 · 9浏览
  • 全部评论

    豆瓜

    豆瓜网

    豆瓜网专栏

  • java下载文件功能怎么实现
  • 正则表达式 数字的表达式
  • rtsp协议之说明
  • 使用require_once的方法说明
  • 怎么部署pmm架构
  • 我来说两句