21xrx.com
2024-12-23 03:31:49 Monday
登录
文章检索 我的文章 写文章
Java实现文件下载功能的方法
2023-06-14 15:26:57 深夜i     --     --
Java 文件下载 HttpServletResponse HttpURLConnection Servlet

在Web应用程序中,实现文件下载功能是非常常见的需求。Java语言提供了多种方式来实现文件下载,本文将介绍其中两种方式。

1.使用HttpServletResponse实现文件下载

首先创建一个Servlet,并在其中实现doGet方法,代码如下:


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  //设置文件MIME类型

  response.setContentType("application/octet-stream");

  //设置Content-Disposition

  response.setHeader("Content-Disposition", "attachment;filename=example.txt");

  //读取要下载的文件,保存到文件输入流

  FileInputStream in = new FileInputStream("D:\\example.txt");

  //创建字节数组输出流

  ByteArrayOutputStream out = new ByteArrayOutputStream();

  //将文件输入流写入字节数组输出流

  byte[] buffer = new byte[1024];

  int length = -1;

  while ((length = in.read(buffer)) != -1) {

    out.write(buffer, 0, length);

  }

  //将字节数组输出流写入HttpServletResponse输出流

  response.getOutputStream().write(out.toByteArray());

  //关闭输入输出流

  in.close();

  out.close();

}

2.使用HttpURLConnection实现文件下载

如果不想使用Servlet,则可以使用HttpURLConnection来实现文件下载,代码如下:


URL url = new URL("http://example.com/example.txt");

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod("GET");

urlConnection.setRequestProperty("Content-Type", "application/octet-stream");

urlConnection.setRequestProperty("Content-Disposition", "attachment;filename=example.txt");

InputStream in = urlConnection.getInputStream();

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int length = -1;

while ((length = in.read(buffer)) != -1) {

  out.write(buffer, 0, length);

}

response.getOutputStream().write(out.toByteArray());

in.close();

out.close();

以上两种方式都可以实现文件下载功能,具体选择哪种方式,取决于实际情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复