SpringBoot 第一讲:图片上传MultipartFile

一、图片上传MultipartFile

概念:
1、MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。
2、transferTo (封装了流生成文件的步骤)会生成文件,最后不需要的文件要删除。
3、enctype就是encodetype就是编码类型的意思。
4、multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。

代码分析:
1、在前端 jsp 页面中,form 表单标签中,加入enctype="multipart/form-data"
ps:
① 只有 method=“post” 时才使用 enctype 属性。
② 在 input 语句中,类型选择file,并且 name 和 id 的输入与数据库字段无关联。(在该实例中,name 和 id 值为 file ,但是在数据库中,该处对应字段为 em4。)

<form action="pres_users_save" method="post" onsubmit="return check_Form()" enctype="multipart/form-data">
	头像上传:
	<input type="file" class="testJ text" name="file" id="file"/>
<form>

2、在后端 controller 内,需要接收前端传来的 file,类型为 MultipartFile。
ps:
① 注意点已在代码中备注。
② 在上传文件完毕后,记得将文件名上传到数据库对应字段中,否则头像加载失败。

	@RequestMapping(value = "pres_users_save")
    public String pres_users_save(TabUsers users, MultipartFile file, HttpServletRequest request) throws IOException {
        List<TabUsers> 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属性,会自行分配设置好的图片。

 <img src="<%=path %>/upload/${it.em4}" onerror="src='<%=path %>/upload/m.jpg'">

4、成品在这里插入图片描述

你可能感兴趣的:((JR)SpringBoot,spring,javascript)