邹瑞20201111

总结

@MultipartConfig注解

jsp表单设置ectype属性为multipart/form-data才可上传文件

在Java文件中

方式一:使用@MultipartConfig注解

(1).处理文件上传的Servlet使用@MultipartConfig注解修饰;该Servlet主要完成访问上传页面以及处理文件上传,通过HttpServletRequest提供的getPart(String name)或getParts()方法获取到上传的文件,再使用Part相关的API获取文件信息以及完成上传。

(2).通过该注解提供的属性:maxFileSize、maxRequestSize等可以对上传文件大小、请求大小进行控制

方式二:web.xml方式配置

使用web.xml方式配置时,需要在中添加标签用来标识该Servlet用于处理文件,否则getPart(name)会是null。该标签与@MultipartConfig注解作用一致,其中的对上传文件的控制所使用的属性也一样,可以根据实际需要配置。

测试说明

(1).使用getPart(String name)方法

在使用request.getPart("upload")时,只会获取表单中所有标签name属性为"upload"中第一个出现的标签,可能是文件、普通元素,所以最好要先判断是否是文件。

(2).使用getParts()方法

使用该方法时,获取表单中所有标签,遍历返回的Collection集合类即可。其中,Part也是包含普通元素以及文件,需要判断一下再使用。

常用的与文件上传相关的API

1.HttpServletRequest提供的方法

  • Part getPart(String name):根据名称获取文件上传域
  • Collection getParts():获取所有的文件上传域

2.Part中常用的方法

  • String getContentType():获取上传文件的文件类型
  • long getSize():上传文件的大小
  • String getSubmittedFileName():上传文件的原始文件名
  • String getName():获取标签中name属性值
  • String getHeader(String name):获取请求头部
  • Collection getHeaderNames():获取所有请求头部名称
  • InputStream getInputStream():获取上传文件的输入流
  • void write(String path):保存文件至服务器

标签

评论

this is is footer