21xrx.com
2025-07-09 02:10:04 Wednesday
文章检索 我的文章 写文章
Java Servlet 实现文件上传功能
2023-06-12 18:09:32 深夜i     24     0
Java Servlet

Java Servlet 是 Java Web 开发中重要的技术栈之一,而文件上传同样也是 Web 开发必不可少的功能。本文将通过 Java Servlet 实现文件上传功能,让大家了解如何在 Web 应用中完成文件上传操作。

1. 上传文件的 HTML 页面

在 HTML 页面中添加一个表单来让用户选择要上传的文件:

Select file to upload:

上述代码中,表单的 `action` 属性指定了表单提交时要调用的 Servlet,而 `method` 属性则指定 HTTP 请求方法为 POST,`enctype` 属性设置为 multipart/form-data,代表上传二进制文件数据。

2. Servlet 代码实现

在 Servlet 中,我们可以通过 HttpServletRequest 的 getPart() 方法获取上传文件的 Part 对象。获取到 Part 对象后,就可通过 write() 方法将文件保存在服务器硬盘上。

@WebServlet("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  public FileUploadServlet() {
    super();
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Part filePart = request.getPart("fileToUpload");
    String fileName = getFileName(filePart);
    OutputStream out = new FileOutputStream(new File("/path/to/save/directory/" + fileName));
    InputStream filecontent = filePart.getInputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = filecontent.read(buffer)) != -1) {
      out.write(buffer, 0, len);
    }
    out.close();
    filecontent.close();
    response.sendRedirect("success.jsp");
  }
  private String getFileName(final Part part) {
    final String partHeader = part.getHeader("content-disposition");
    for (String content : partHeader.split(";")) {
      if (content.trim().startsWith("filename")) {
        return content.substring(content.indexOf('=') + 1).trim().replace("\"", "");
      }
    }
    return null;
  }
}

上述代码中,`@WebServlet` 注解将 Servlet 映射到 "/upload" URL,`@MultipartConfig` 注解告诉 Tomcat 服务器这是一个上传文件的类型请求。

3. 测试文件上传功能

打开文件上传的 HTML 页面,选择好要上传的文件后,点击 Upload File 按钮即可完成文件上传操作。上传成功后,可以根据代码逻辑将文件保存在硬盘上,并重定向到一个显示上传成功信息的页面(例如 success.jsp)。

、文件上传、multipart/form-data。

  
  

评论区