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(getFileContentType(fileName));
    response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(realName, "utf-8"));
    // 循环取出流中的数据
    byte[] b = new byte[1024];
    int len = 0;
    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();
    }
  }
 ```

/**
* 文件的内容类型
*/
fun getFileContentType(name: String): String? {
var result = “”
val fileType = name.toLowerCase()
result = if (fileType.endsWith(".png")) {
“image/png”
} else if (fileType.endsWith(".gif")) {
“image/gif”
} else if (fileType.endsWith(".jpg") || fileType.endsWith(".jpeg")) {
“image/jpeg”
} else if (fileType.endsWith(".svg")) {
“image/svg+xml”
} else if (fileType.endsWith(".doc") || fileType.endsWith(".docx")) {
“application/msword”
} else if (fileType.endsWith(".xls") || fileType.endsWith(".xlsx")) {
“application/x-excel”
} else if (fileType.endsWith(".zip")) {
“application/zip”
} else if (fileType.endsWith(".pdf")) {
“application/pdf”
} else {
“application/octet-stream”
}
return result
}
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值