@MultipartConfig,Servlet3.0通过Part进行文件上传

来源:互联网 发布:我的世界编程猫 编辑:程序博客网 时间:2024/05/17 22:24
@MultipartConfig使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将multipart/form-data 的 POST 请求封装成 Part,通过 Part 对文件进行上传。Servlet3 没有提供直接获取文件名的方法,需要从请求头中解析出来

upload.html

<form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="f"><br/><input type="submit" name="submit"></form>

UploadServlet//request.getpart()单文件上传

@WebServlet("/upload")@MultipartConfigpublic class UploadServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public UploadServlet() {}    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        // 获取请求项, 封装成Part对象        Part part = request.getPart("f");        String fileName = part.getSubmittedFileName();        System.out.println(fileName);        String direc = this.getServletContext().getRealPath("/upload/");        File dirf = new File(direc);        if(!dirf.exists()){            dirf.mkdirs();        }        part.write(direc+fileName);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException {        doGet(request, response);    }}

使用request.getParts() 多文件上传

        request.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        Collection<Part> parts = request.getParts();        for(Part part:parts){            String fileName = part.getSubmittedFileName();            System.out.println(fileName);            if(null!=fileName&&!(fileName).trim().equals("")){                String direc = this.getServletContext().getRealPath("/upload/");                File dirf = new File(direc);                if(!dirf.exists()){                    dirf.mkdirs();                }                part.write(direc+fileName);            }        }


可能遇到的问题:
使用Servlet3.0上传图片,无法使用part.getSubmittedFileName()方法解决