21xrx.com
2024-09-20 06:01:04 Friday
登录
文章检索 我的文章 写文章
Java文件上传代码实现
2023-06-17 13:38:56 深夜i     --     --
Java 文件上传 Servlet

文件上传功能在很多网站和应用程序中都很常见。Java作为一种广泛使用的编程语言,提供了丰富的类库和API来实现文件上传功能。下面我们来介绍一下Java文件上传代码的实现。

首先,我们需要在网页或应用程序中添加一个表单来实现文件选择和上传功能。表单中要包含enctype="multipart/form-data"属性,以便支持文件上传。然后在表单中添加一个input元素,type="file",用来选择要上传的文件。在用户提交表单后,我们需要在后台处理文件上传操作。

Java提供了Servlet和JSP技术来处理Web请求和响应。我们可以使用javax.servlet.http.Part接口访问上传的文件。 Part接口提供了许多方法,如getInputStream()、getSubmittedFileName()、getSize()等,可以帮助我们操作上传文件。

以下是一个简单的Java文件上传示例:


// 完整代码见 https://github.com/smarttang/FileUploadDemo/

@WebServlet(name = "upload", urlPatterns = { "/upload" }, initParams = {

    @WebInitParam(name = "filePath", value = "/tmp") })

@MultipartConfig

public class UploadServlet extends HttpServlet {  

  private String filePath;  

  public void init(ServletConfig config) throws ServletException {

    filePath = config.getInitParameter("filePath");    

  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html;charset=utf-8");

    String message = ""; 

    try {

      Collection parts = request.getParts();     

      for (Part part : parts) {

        String fileName = getFileName(part);        

        if (StringUtils.isNotEmpty(fileName)) {

          part.write(filePath + File.separator + fileName);

          message = "文件保存成功!";

        }

      }     

    } catch (Exception e) {

      e.printStackTrace();

      message = "文件保存失败: " + e.getMessage();

    }

    response.getWriter().write(message);  

  }

  private String getFileName(Part part) {

    String contentDispositionHeader = part.getHeader("content-disposition");

    String[] elements = contentDispositionHeader.split(";");

    for (String element : elements) {

      if (element.trim().startsWith("filename")) {

        return element.substring(element.indexOf('=') + 1).trim()

            .replace("\"", "");

      }

    }

    return null;

  }

}

上述代码中,我们使用@WebServlet注解来标记一个Servlet,并使用@MultipartConfig注解来指定上传文件的最大大小等配置信息。在doPost()方法中,我们首先获取请求中的所有Part对象,然后遍历每个Part对象,获取上传的文件名和流,最后将文件保存到指定路径。

  
  

评论区

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