一、图片上传介绍
JavaWeb方向编程过程中,实现图片上传有三种方式:
1、传统的基于springMVC的MultipartFile类实现图片上传。
2、基于Ajax的图片上传。
3、基于Base64压缩的图片上传。
二、springMVC图片上传(springboot通用)
此方法的优点是可以将图片和其他的表单元素一起提交到服务器,服务器接受到的图片其实已经存储于容器的临时文件中,进行文件拷贝工作比较简单。
缺点是无法及时看到图片上传的预览效果,图片一旦选择错误只能重新提交。
注:红色代码为关键代码。
1、页面代码
选择头像:用户名字:
2、config.properties配置文件
创建名为config.properties的配置文件,并且再其中配置图片上传物理路径。注意window和linux的写法不同。
**此配置内容在springboot结构中的application.properties文件中配置**
file.location.path=d:/upload
3、spring-servlet.xml配置文件
**此配置文件在springboot中不需要配置 - “习惯大于配置”**
4、controller代码
若是一次上传多个文件,需要使用注解@RequestParam("inputName") 指明该文件对应表单中的input标签的name属性。如果name都是同名的,可以使用MultipartFile [] 文件数组来接收
@Controllerpublic classUserController {
@Autowired
UserService userService;
@Value("${file.location.path}")
privateString fileLocation;
@RequestMapping("/insert")publicString insert(User user, MultipartFile file){
String uri= FileUpload.upload(file,"/upload",fileLocation);
user.setFacePic(uri);int ret =userService.insertUser(user);if(ret > 0){return "redirect:/get";
}else{return "register";
}
}
}
5、上传工具类代码
public classFileUpload {/***@paramfile 上传的文件
*@parampath 文件的虚拟路径,例如 /upload
*@paramfileLocation 文件的物理路径,例如d:/upload
*@return文件的虚拟路径+文件名
*
* fileName.lastIndexOf(".")为获取后缀名
* UUID.randomUUID()为获取唯一标识,保证文件的唯一性*/
public staticString upload(MultipartFile file, String path, String fileLocation) {
String fileFinishName= null;try{//如果目录不存在则创建
File uploadDir = newFile(fileLocation);if (!uploadDir.exists()) {
uploadDir.mkdir();