0%

SpringMVC图片上传

首先给服务器添加一个虚拟目录用来存放图片

在eclipse或者idea中可以使用图形化界面添加,也可以直接修改服务器配置文件

在conf/server.xml文件,添加虚拟目录:
<Context docBase=”E: \develop\upload\temp” path=”/pic” reloadable= =”false”/>

注意:

​ 在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般采用按日期(年、月、日)进行分
级创建

导入文件上传的jar包

commons-fileupload-1.2.1.jar

commons-io-1.4.jar

在springmvc.xml配置文件上传的解析器

id必须存在且必须是multipartResolver

1
2
3
4
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize" value="5242880"/>
</bean>

在controller的方法中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public String updateStudent(Model model,
@Validated(value={ValidGroup1.class}) Student student, BindingResult bindingResult,
//图片被封装在这个对象中
MultipartFile items_pic) throws Exception {
... ...

//获取原始图片名
String originalFilename = items_pic.getOriginalFilename();
//上传图片
if(items_ pic!=nu11 && originalFilename != null && originalFilename.length() > 0){
//存储图片的物理路径
String pic_path = "E:\\upload\\";

//新的图片名称
String newFileName = UUID.randomUUID() +
originalFilename.substring(originalFilename.lastIndexOf("."));
//新图片
File newFile = new File(pic_path+newFileName);
//将内存中的数据写入磁盘
items_pic.transferTo(newFile);
//将图片名加入到对象中用于存入数据库
student.setPicture(newFileName);
}

......

return "success";
}

形参中的MultipartFile变量名必须和表单中的name值保持一致,如果不一致,需要加@ResquestParm()注解

同时上传多个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
public String fileUpload(MultipartFile[] files, Model model) {
String filename1 = files[0].getOriginalFilename();
String filename2 = files[1].getOriginalFilename();
try {
files[0].transferTo(new File("d:/",filename1));
files[1].transferTo(new File("d:/",filename2));
model.addAttribute("msg",new String("上传成功"));
} catch (IOException e) {
model.addAttribute("msg",new String("上传失败"));
e.printStackTrace();
}
return "index.jsp";
}
1
2
3
4
5
<form action="fileUpload.do" method="post" enctype="multipart/form-data">
<input type="file" name="files">
<input type="file" name="files">
<input type="submit" value="提交">
</form>
赏口饭吃吧!