Javaweb实现文件下载
时间: 2023-09-08 10:15:09 浏览: 47
在JavaWeb中实现文件下载需要以下步骤:
1. 获取要下载的文件路径和文件名。
2. 创建一个输入流将文件读进来。
3. 设置响应头,告诉浏览器返回的是一个文件,以及文件名和大小。
4. 创建一个输出流将文件写到浏览器中。
下面是一个简单的示例代码:
```
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要下载的文件路径和文件名
String filePath = "C:/files/";
String fileName = "file.txt";
File file = new File(filePath + fileName);
if (!file.exists()) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
// 设置响应头,告诉浏览器返回的是一个文件,以及文件名和大小
response.setContentType("application/octet-stream");
response.setContentLength((int) file.length());
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 创建一个输入流将文件读进来
FileInputStream fis = new FileInputStream(file);
// 创建一个输出流将文件写到浏览器中
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
fis.close();
os.close();
}
```
在这个示例中,我们假设要下载的文件名为file.txt,存储在C:/files/下面。首先判断文件是否存在,如果不存在,返回404错误。然后设置响应头,告诉浏览器返回的是一个文件,以及文件名和大小。接着创建一个输入流将文件读进来,再创建一个输出流将文件写到浏览器中。最后关闭输入流和输出流。