🆗这个问题虽然代码不难,但是配置缺一不可
在SpringMVC配置下的文件上传
对页面的要求:
form表单的属性method:post请求(get请求没有请求体)
form表单的属性enctype:默认值是application/x-www-form-urlencoded
将它设置为multipart/form-data
使用<input type="file">选择文件
后台如何接收数据
步骤
1.导入文件上传的依赖 包名:
`1.commons-fileupload
2.commons-io`
在springmvc.xml文件中配置上传的解析器
<!--文件上传必备的bean id不可以改变-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置最大的上传的文件大小 : 10M
这个必须必须要设置!!!!!!上回我就是因为忘了设置文件的大小,
找不出问题在哪里改这改那差点没推掉整个项目.....血的教训
-->
<property name="maxUploadSize" value="10485760"/>
<!--这里设置的文件大小可以按照你想要的大小设置
众所周知1KB=1024B,这里我想要限制10M那就是10*1M=10*1024KB=10*1024*1024B=10485760B
这里的单位是B,那么结果就是10485760-->
如果用的是maven项目导入依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
//值得注意的是,commons-fileupload包已经含有了conmons-io包,
//但是如果你想更改它的版本,那么再导入一个commons-io包就可以覆盖了
</dependency>
🆗接下来是Controller的代码
@RequestMapping("/addUser.action")
public User queryUserByCondition(User user,MultipartFile photo){
if(photo==null){
throw new UserException("请选择图片");
}else{
//保存文件
String savePath="D:\\upload";
//File类
File pathFile=new File(savePath);
if(!pathFile.exists()){
//创建文件夹
pathFile.mkdirs();
}
//文件名的取名:时间戳/UUID
String uploadFileName=photo.getOriginalFilename();
String suffix=uploadFileName.subString(uploadFileName.lastIndexOf(","));
String saveFilename=UUID.randomUUID().toString().replace("-","").toUpperCase()+suffix;
//保存
photo.transferTo(new File(savePath,saveFilename));
//给user对象的photoPath赋值
user.serPhotoPath(saveFilename);
//调用业务层,保存用户
userService.saveUser(user);
model.addAttribute("msg","保存成功");
return "msg";//页面
}
}