Servlet3.0 above part () upload files

In Servlet3.0, add the Part () interface, convenient for file uploads.

@MultipartConfig标注可用来设置Servlet处理上传文件的相关信息,否则getPart()得到的结果将为null.
To specify the name of the call to obtain the corresponding getPart () Part of the object, each content segment multipart / form-data transmission, will have the following header information:

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);
    }
}

Front page:

<body>
<form action="/ServletDemo" method="post"  enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit" value="上传文件">
</form>
</body>
Multi-file upload:
@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);
    }
}

Front page:

<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>
Released seven original articles · won praise 3 · Views 147

Guess you like

Origin blog.csdn.net/qq_37698425/article/details/104094811