(JR)SpringBoot|SpringBoot 第一讲(图片上传MultipartFile)

一、图片上传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属性,会自行分配设置好的图片。
(JR)SpringBoot|SpringBoot 第一讲(图片上传MultipartFile)
文章图片

4、成品(JR)SpringBoot|SpringBoot 第一讲(图片上传MultipartFile)
文章图片

    推荐阅读