SpringMVC 文件上传、多文件上传及文件下载

SpringMVC的文件上传问题,使用文件上传的第三方组件apache下的:commons-fileupload、commons-io

关于文件上传的组件还有cos、jspsmartupload

单个文件上传

使用SpringMVC封装好的文件上传组件进行文件上传的步骤:

一、首先编写简单的前台代码

action:作为请求路径

method:必须用post

enctype:必须用multipart/form-data(将文件以二进制的形式上传,可以实现多种类型的文件上传 ;

application/x-www-form-urlencoded只能上传文本格式的文件
input控件类型为file,添加一个name属性

SpringMVC 文件上传、多文件上传及文件下载

二、后台代码

1、在pom.xml中添加文件上传的依赖

SpringMVC 文件上传、多文件上传及文件下载

2、在springMVC配置文件springmvc-servlet中添加文件上传的类

在springmvc中专门封装了一个类CommonsMultipartResolver来处理文件上传

SpringMVC 文件上传、多文件上传及文件下载

3、在spring配置文件中添加bean

SpringMVC 文件上传、多文件上传及文件下载

4、controller中的代码编写

SpringMVC 文件上传、多文件上传及文件下载

三、文件上传应该注意的地方

文件上传并不是直接上传到IDE工程目录下而是上传到部署目录

1、eclipse默认的目录

SpringMVC 文件上传、多文件上传及文件下载

2、自己更改tomcat的部署目录

当这里为灰色不能修改时,关闭tomcat,remove tomcat下的工程,右键clean就可以更改了

SpringMVC 文件上传、多文件上传及文件下载

多个文件上传

在单个文件上传的基础上实现多文件上传,多文件上传时如果只选择其中两个上传可能会上传成功但是后台会报错,需要在后台加入一个不为空的判断

1、前台代码只需要增加两个input file控件,并且有一样的name属性

SpringMVC 文件上传、多文件上传及文件下载

2、后台需要MultipartFile接收数组参数(一定要有注解@RequestParam)  然后遍历(这里不再需要request转型)

SpringMVC 文件上传、多文件上传及文件下载

文件下载

1、前台<a>标签预览图片(注意图片的地址,我这个是工程下的),表单的action中要带参数,参数名要和后台接收的参数名一致,参数值为文件名

SpringMVC 文件上传、多文件上传及文件下载

SpringMVC 文件上传、多文件上传及文件下载

2、后台文件名不能为空(注解@RequestParam不能设置required=false) 

SpringMVC 文件上传、多文件上传及文件下载