SSM框架学习9-springmvc文件上传
目录
1. 导入文件上传的工具依赖
2. 配置文件上传的解析器
3. 编写测试
3.1单文件上传
3.2多文件上传
1. 导入文件上传的工具依赖
在web.xml中配置:
commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.4
2. 配置文件上传的解析器
在spring-mvc中配置:
3. 编写测试
接下来两个例子来说明用法
3.1单文件上传
首先编写好表单如下:
name:
file:
当要上传文件时,注意 enctype的设置,此时后台获取的方法:
@RequestMapping("/quick14") @ResponseBody public void save14(String username, MultipartFile upload) throws IOException { System.out.println(username); String filename=upload.getOriginalFilename();//获得源文件的完整名字,含后缀 upload.transferTo(new File("D:\\image\\" + filename));//将这个文件转存到另一个地方,这个地址是基于当前主机的绝对地址,记住最后要加\\ }
首先我们接收String参数很简单形参和表单name匹配即可,然后我们的file数据在springmmvc里也设置了一个对象即 MultipartFile,然后形参与表单那么匹配即可
然后我们需要得到这个源文件的名字——getOriginalFilename(),通过这个方法即可,
然后就是通过——transferTo(new File("绝对路径\\"+文件名))
将文件写入本地,因为有了一个MultipartFile对象,使我们获得文件数据并操作它变得简易。
3.2多文件上传
第一种方式就是多设置几个上传文件的input,将name设置成不同的,然后后台对象增多,一样的方法执行,这里就不多赘述。
第二种方式就是通过数组的方式,也就是将MultipartFile对象设为数组来接收请求数据:
就像这样,我们只需要多uploadFile这个数组循环操作即可
这种方式下,表单中文件传输的input的name就都设为相同:
这就跟上一章讲的数组的请求传参一样,name相当于键都设为同一值,这时框架会自动匹配形参里面的这个值,而这个刚好是一个文件数组形式的对象,所以就依次往数组里添加文件对象。