一、图片上传MultipartFile 概念:
1、MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。
2、transferTo (封装了流生成文件的步骤)会生成文件,最后不需要的文件要删除。
3、enctype就是encodetype就是编码类型的意思。
4、multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。
【(JR)SpringBoot|SpringBoot 第一讲(图片上传MultipartFile)】代码分析:
1、在前端 jsp 页面中,form 表单标签中,加入enctype="multipart/form-data"
。
ps:
① 只有 method=“post” 时才使用 enctype 属性。
② 在 input 语句中,类型选择file,并且 name 和 id 的输入与数据库字段无关联。(在该实例中,name 和 id 值为 file ,但是在数据库中,该处对应字段为 em4。)
2、在后端 controller 内,需要接收前端传来的 file,类型为 MultipartFile。
ps:
① 注意点已在代码中备注。
② 在上传文件完毕后,记得将文件名上传到数据库对应字段中,否则头像加载失败。
@RequestMapping(value = "https://www.it610.com/article/pres_users_save")
public String pres_users_save(TabUsers users, MultipartFile file, HttpServletRequest request) throws IOException {
List check_loginname_list = users_service.findByloginname(users.getLoginname());
if(check_loginname_list.isEmpty()){
//指引项目路径,获取 upload 的根目录
String path = request.getServletContext().getRealPath("/upload");
//路径以以流的方式表现出来
File dir = new File(path);
//检查是否有 upload 文件夹,没有则创建
dir.mkdirs();
//获取图像的名字 得到上传时的文件名
String srcName = file.getOriginalFilename();
//复制粘贴,dest spring框架封装的流。
File dest = new File(dir,srcName);
//文件上传
file.transferTo(dest);
//此处为业务代码,不涉及图片上传
String id = CreateUUID.getuuid();
String source = "前台";
String datetimes = CreateDate.getDate();
users.setPassword(ShaEncrypt.shaEncode(users.getPassword()));
users.setId(id);
users.setFlag("1");
users.setEm1(source);
users.setEm2("");
users.setEm3(datetimes);
users.setEm4(srcName);
users.setEm5("");
boolean b = users_service.save(users);
request.setAttribute("msg",b);
}else{
request.setAttribute("msg",false);
}
return "app/pres_users";
}
3、onerror 属性
当图片获取失败时,在前端 jsp 页面中加入 onerror属性,会自行分配设置好的图片。
文章图片
4、成品
文章图片
推荐阅读
- #|Spring Boot spring.factories 用法及原理
- 技术分享|SpringBoot 底层原理剖析
- javascript|echarts 水球图
- 笔记|require.context()的用法详解
- vue|vue实时获取时间
- element|element ui日期组件设置默认时间
- 前端|vue使用echarts-liquidfill水球图不生效
- 笔记|echarts公司内部图表(冒死上传)
- springBoot|SpringBoot中Excel的上传