javaweb采用绝对路径实现可以选择本地文件并下载到本地文件目录 jsp代码,servlet代码
时间: 2024-03-06 10:51:18 浏览: 62
jsp+servlet实现文件下载
5星 · 资源好评率100%
以下是一个简单的 JSP 页面和对应的 Servlet,用于实现在 JavaWeb 中选择本地文件并下载到本地文件目录:
JSP 页面代码(`index.jsp`):
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaWeb 文件下载</title>
</head>
<body>
<h1>请选择要下载的文件:</h1>
<form action="download" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<br>
<input type="submit" value="下载">
</form>
</body>
</html>
```
Servlet 代码(`DownloadServlet.java`):
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取上传的文件
Part filePart = request.getPart("file");
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
// 构造文件保存路径
String savePath = "C:/temp/" + fileName;
Path saveFile = Paths.get(savePath);
// 将上传的文件保存到本地
try (InputStream in = filePart.getInputStream();
OutputStream out = Files.newOutputStream(saveFile)) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
// 向客户端发送文件
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
try (InputStream in = Files.newInputStream(saveFile);
OutputStream out = response.getOutputStream()) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
}
}
```
说明:
1. 在 JSP 页面中,通过 `<input type="file">` 元素实现了选择本地文件的功能。
2. 在 Servlet 中,通过 `request.getPart("file")` 获取上传的文件,然后将其保存到本地文件目录中。
3. 最后,通过设置响应的 Content-Type 和 Content-Disposition,将保存的文件发送给客户端进行下载。
阅读全文