Servlet3.0以上 part() 上传文件

在Servlet3.0中,新增了Part()接口,可以方便的进行文件上传处理。

@MultipartConfig标注可用来设置Servlet处理上传文件的相关信息,否则getPart()得到的结果将为null.
调用getPart()时要指定名称获得对应的Part对象,multipart/form-data发送的每个内容区段,都会有以下的标头信息:

Content-Disposition:form-data;name=“filename”; filename="caterpillar.jpg"
Content-Type: image/jpeg

@WebServlet("/ServletDemo")
@MultipartConfig  //使用MultipartConfig注解标注改servlet能够接受文件上传的请求
public class ServletDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");

        Part part = request.getPart("myfile");
        String header = part.getHeader("content-disposition");
        System.out.println(header);
        String suffix = header.substring(header.lastIndexOf("."), header.length() - 1);

        String realpath = getServletContext().getRealPath("upload");
        File file = new File(realpath);
        if(!file.exists()){
            file.mkdirs();
        }
        part.write(realpath+"/"+System.currentTimeMillis()+suffix);
    }

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

前端页面:

<body>
<form action="/ServletDemo" method="post"  enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit" value="上传文件">
</form>
</body>
多文件上传:
@WebServlet("/ServletDemo3")
@MultipartConfig  //使用MultipartConfig注解标注改servlet能够接受文件上传的请求
public class ServletDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");

        Collection<Part> parts = request.getParts();
        for (Part part : parts) {
            String header = part.getHeader("content-disposition");
            System.out.println(header);

            String suffix = header.substring(header.lastIndexOf("."),header.length()-1);
            String filename = System.currentTimeMillis()+suffix;

            String realpath = getServletContext().getRealPath("upload");
            File file = new File(realpath);
            if (!file.exists()) {
                file.mkdirs();
            }

            part.write(realpath+"/"+filename);

        }

    }

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

前端页面:

<body>
<form action="/ServletDemo3" method="post"  enctype="multipart/form-data">
    <input type="file" name="myfile1">
    <input type="file" name="myfile2">
    <input type="file" name="myfile3">
    <input type="file" name="myfile4">
    <input type="submit" value="上传文件">
</form>

</body>
发布了7 篇原创文章 · 获赞 3 · 访问量 147

猜你喜欢

转载自blog.csdn.net/qq_37698425/article/details/104094811