java 如何保存上传的pdf文件

在Java中,可以使用Servlet来处理文件上传并保存上传的PDF文件。以下是详细的步骤和代码示例,展示如何实现这一功能。

步骤

  1. 添加依赖:在pom.xml中添加对Apache Commons FileUpload和Commons IO库的依赖。
  2. 创建HTML表单:创建一个HTML表单来上传PDF文件。
  3. 编写Servlet:编写一个Servlet来处理文件上传并保存PDF文件。

详细实现

1. 添加依赖

在Maven项目中,添加以下依赖到pom.xml

xml
<dependencies> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.8.0</version> </dependency> </dependencies>

2. 创建HTML表单

创建一个HTML文件upload.html,用于上传PDF文件:

html
<!DOCTYPE html> <html> <head> <title>Upload PDF</title> </head> <body> <h2>Upload PDF File</h2> <form method="post" action="uploadServlet" enctype="multipart/form-data"> <input type="file" name="file" accept="application/pdf"> <input type="submit" value="Upload"> </form> </body> </html>

3. 编写Servlet

编写一个Servlet UploadServlet 来处理文件上传:

java
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Paths; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; 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; import org.apache.commons.io.IOUtils; @WebServlet("/uploadServlet") @MultipartConfig public class UploadServlet 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(); // 解决IE上传文件路径问题 // 检查文件类型是否为PDF if (!fileName.endsWith(".pdf")) { response.getWriter().println("Please upload a PDF file."); return; } // 设置文件保存路径 String uploadPath = getServletContext().getRealPath("") + File.separator + "uploads"; File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } // 保存文件 File file = new File(uploadDir, fileName); try (InputStream fileContent = filePart.getInputStream(); FileOutputStream fos = new FileOutputStream(file)) { IOUtils.copy(fileContent, fos); } response.getWriter().println("File uploaded successfully."); } }

详细解释

  1. 依赖库:使用Apache Commons FileUpload库处理文件上传,Commons IO库进行文件操作。
  2. HTML表单:通过enctype="multipart/form-data"属性,表单能够上传文件。
  3. Servlet
    • 注解@WebServlet@MultipartConfig用于配置Servlet和处理文件上传。
    • 获取文件:通过request.getPart("file")获取上传的文件。
    • 文件名处理:使用Paths.get(filePart.getSubmittedFileName()).getFileName().toString()来处理不同浏览器提交的文件名。
    • 文件类型检查:检查文件是否为PDF类型。
    • 文件保存路径:设置文件保存路径,并确保目录存在。
    • 保存文件:使用IOUtils.copy将文件内容保存到服务器。

总结

本文详细介绍了如何在Java中使用Servlet处理PDF文件的上传和保存。通过添加必要的依赖库,创建上传表单,并编写处理上传的Servlet,可以实现文件上传功能。

关键字

Java,Servlet,文件上传,PDF文件,Apache Commons FileUpload,Commons IO,MultipartConfig,HTML表单,文件保存路径