美文网首页JavaWeb
Servlet3.0文件上传简单操作

Servlet3.0文件上传简单操作

作者: 黄少存 | 来源:发表于2018-03-26 21:56 被阅读0次

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

    文件上传API

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

    • Part getPart(String name): 用于获取请求中指定name的文件
    • Coolection<Part> getParts();获取请求中全部的文件

    每一个文件用 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 .

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

    相关文章

      网友评论

        本文标题:Servlet3.0文件上传简单操作

        本文链接:https://www.haomeiwen.com/subject/qoddcftx.html