🆗这个问题虽然代码不难,但是配置缺一不可
在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
>
</dependency
>
🆗接下来是Controller的代码
@RequestMapping("/addUser.action")
public User
queryUserByCondition(User user
,MultipartFile photo
){
if(photo
==null
){
throw new UserException("请选择图片");
}else{
String savePath
="D:\\upload";
File pathFile
=new File(savePath
);
if(!pathFile
.exists()){
pathFile
.mkdirs();
}
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
.serPhotoPath(saveFilename
);
userService
.saveUser(user
);
model
.addAttribute("msg","保存成功");
return "msg";
}
}