21xrx.com
2024-12-23 03:31:12 Monday
登录
文章检索 我的文章 写文章
Java Servlet 实现文件上传功能
2023-06-12 18:09:32 深夜i     --     --
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。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复