JavaWeb

Servlet3.0文件上传简单操作

2018-03-26  本文已影响0人  黄少存

此前,对于处理上传文件的操作一直是开发者比较头疼的问题,因为 Servlet 本身没有提供直接的支持,需要使用第三方框架来实现,第三方框架使用起来也不够简单。如今这些都成为了历史,Servlet 3.0 提供了文件上传操作功能,而且使用也非常简单。

文件上传API

HttpServletRequest 提供了两个方法用于从请求中解析上传的文件:

每一个文件用 javax.servlet.http.Part 对象来表示,该接口提供了很多处理文件的方法,比如 write(),getSubmittedFileName().至此结合 HttpServletRequest 对象和
@MultipartConfig 注解来处理文件上传就变得非常简单,以下咱就来做个简单的文件上传例子吧.

简单文件上传操作

书写表单,

  1. enctype 需使用 multipart/form-data,不然直接报错
  2. method 需要使用 post 提交,get 限制了数据大小
  3. 需要提供 file 控件
<form action="/fileUpload" method="post" enctype="multipart/form-data">
    <p><input type="text" name="username"/></p>
    <p><input type="file" name="headImg"/></p>
    <input type="submit" value="注册">
</form>

书写FileUploadServlet

@WebServlet("/fileUpload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
          throws ServletException, IOException {
        try {
            // 普通控件数据还是使用getParameter方法来获取
            System.out.println("username:" + req.getParameter("username"));
            // 文件控件数据获取
            Part part = req.getPart("headImg");
            part.write("D://upload/headImg.png");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }}

这里只需要给 Servlet 贴一个标签 @MultipartConfig 然后使用 getPart() 获取请求中指定 name 的文件到 Part 对象中,再使用 write 方法把文件保存到指定目录就 ok .

普通控件的获取也变得很简单,只需要使用获取参数的方法来获取即可.

上一篇下一篇

猜你喜欢

热点阅读