HttpServletRequest 对文件上传的支持

Posted demonfeatuing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletRequest 对文件上传的支持相关的知识,希望对你有一定的参考价值。

此前,对于处理上传文件的操作一直是让开发者头疼的问题,因为 Servlet 本身没有对此提供直接的支持,需要使用第三方框架来实现,而且使用起来也不够简单。Servlet 3.0 已经提供了这个功能,而且使用也非常简单。为此,HttpServletRequest 提供了两个方法用于从请求中解析出上传的文件:

?Part getPart(String name)

?Collection<Part> getParts()

前者用于获取请求中给定 name 的文件,后者用于获取所有的文件。每一个文件用一个 javax.servlet.http.Part 对象来表示。该接口提供了处理文件的简易方法,比如 write()、delete() 等。至此,结合 HttpServletRequest 和 Part 来保存上传的文件变得非常简单,如下所示:

Part photo = request.getPart("photo"); photo.write("/tmp/photo.jpg"); // 可以将两行代码简化为 request.getPart("photo").write("/tmp/photo.jpg") 一行。

 

另外,可以配合前面提到的 @MultipartConfig 注解来对上传操作进行一些自定义的配置,比如限制上传文件的大小,以及保存文件的路径等。其用法非常简单。

需要注意的是,如果请求的 MIME 类型不是 multipart/form-data,则不能使用上面的两个方法,否则将抛异常。

以上是关于HttpServletRequest 对文件上传的支持的主要内容,如果未能解决你的问题,请参考以下文章

图片上传,文件流经过base64转码,最后转成字符串上传到服务器,通过HttpServletRequest的getParameter

文件上传 servlet 从HttpServletRequest.getInputStream()中获得消息内容

文件上传 servlet 从HttpServletRequest.getInputStream()中获得消息内容

request相关研究

Servlet如何上传文件? 戳这里

如何在 Tomcat 上运行的 servlet 过滤器中使用 HttpServletRequest#getParts()?