下面是详细讲解“JavaServlet的文件上传和下载实现方法”的完整攻略。
一、文件上传的实现
1. HTML页面的制作
我们需要先准备一个用于上传文件的HTML页面。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
2. Java Servlet的实现
然后,我们需要实现一个Java Servlet,用来接收并处理上传的文件。
import java.io.File;
import java.io.IOException;
import java.util.UUID;
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("/upload")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 获取上传的文件部件
Part part = request.getPart("file");
// 获取文件名
String fileName = part.getSubmittedFileName();
// 获取服务器上的绝对路径
String uploadPath = request.getServletContext().getRealPath("/uploads");
// 生成唯一的文件名
String uuid = UUID.randomUUID().toString();
String filePath = uploadPath + "/" + uuid + "_" + fileName;
// 将上传的文件写入服务器的磁盘中
part.write(filePath);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("文件上传成功!");
}
}
3. 效果展示
将以上的HTML和Java代码保存在相应的文件中,部署在Web容器中运行,即可看到上传文件的效果,上传的文件会保存在服务器的磁盘中。
二、文件下载的实现
1. Java Servlet的实现
我们需要实现一个Java Servlet,用来接收并处理下载请求。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 获取下载的文件名
String fileName = request.getParameter("fileName");
// 获取服务器上的绝对路径
String downloadPath = request.getServletContext().getRealPath("/uploads");
// 构造要下载的文件对象
File file = new File(downloadPath + "/" + fileName);
// 设置文件的响应类型
response.setContentType("application/octet-stream");
// 设置文件的大小
response.setContentLength((int) file.length());
// 设置文件的响应头
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 输出文件内容到响应流中
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bis.close();
bos.close();
}
}
2. HTML页面的制作
最后,我们需要准备一个用于下载文件的HTML页面。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<body>
<h1>文件列表</h1>
<ul>
<li><a href="download?fileName=file1.txt">file1.txt</a></li>
<li><a href="download?fileName=file2.txt">file2.txt</a></li>
<li><a href="download?fileName=file3.txt">file3.txt</a></li>
</ul>
</body>
</html>
3. 效果展示
将以上的HTML和Java代码保存在相应的文件中,部署在Web容器中运行,即可看到下载文件的效果,点击HTML页面上的文件名即可下载服务器中相应的文件。
以上就是JavaServlet的文件上传和下载实现方法的详细攻略,希望能够对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaServlet的文件上传和下载实现方法 - Python技术站