• Java上传文件有多种方式,包括:
      • 使用文件流上传;
      • 基于commons-fileupload组件的文件上传;
      • 基于Servlet 3及以上版本的文件上传等。
    • Spring MVC框架的文件上传是基于commons-fileupload组件的文件上传。
    • Spring MVC框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现,取消了不同上传组件上的编程差异。

    • Spring MVC框架的文件上传基于commons-fileupload组件的文件上传,需要将commons-fileupload组件相关的jar(commons-fileupload-1.3.1.jar和commons-io-2.4.jar)拷贝到Spring MVC应用的WEB-INF/lib目录下。
    • commons-fileupload组件可以从/http://commons.apache.org/proper/commons-fileupload/上下载,下载它的Binaries压缩包(commons-fileupload-1.3.1-bin.zip),解压后的目录中有两个子目录,分别是lib和site。lib目录下有个JAR文件:commons-fileupload-1.3.1.jar,该文件是commons-fileupload组件的类库。site目录中是commons-fileupload组件的文档,也包括API文档。
    • commons-fileupload组件依赖于Apache的另外一个项目:commons-io,该组件可以从http://commons.apache.org/proper/commons-io/上下载,下载它的Binaries压缩包(commons-io-2.4-bin.zip),解压缩后的目录中有四个JAR文件,其中有一个commons-io-2.4.jar文件,该文件是commons-io的类库。

    • 基于表单的文件上传,要将enctype属性的值设置为multipart/form-data。同时,表单的提交方式要设置为post。
    • 表单的enctype属性指定的是表单数据的编码方式,有三个值:
      • application/x-www-form-urlencoded:默认的编码方式,只处理表单域里的value属性值。
      • multipart/form-data:该编码方式以二进制流的方式来处理表单数据,并将文件域指定文件的内容封装到请求参数里。
      • text/plain:该编码方式当表单的action属性为mailto:URL的形式时才使用,主要适用于直接通过表单发送邮件的方式。