功能流程:
1. 新建userBO对象从前端接收base64字符串,转换为文件对象
2.将文件对象转换为MultipartFile(fastdfs所需要的文件类型)
3.利用fastDFSClient工具上传图片,上传成功会返回文件存储地址,并且会自动生成一个缩略图
4.缩略图有命名规则,按照规则获取缩略图的存储地址
5.将大图和缩略图的存储地址设定在userBO对象上
6.将用户对象信息更新至数据库,并将更新后的信息查询并返回给前端
主要代码展示如下:
controller
@PostMapping("/uploadFaceBase64") public JSONResult uploadFaceBase64(@RequestBody UsersBO userBO) throws Exception{ // 获取前端传来的base64字符串, 然后转换为文件对象再上传 String base64Data = userBO.getFaceData(); String userFacePath = "C:\\" + userBO.getUserId() + "userFace64.png"; FileUtils.base64ToFile(userFacePath, base64Data); // 上传文件到fastdfs MultipartFile faceFile = FileUtils.fileToMultipart(userFacePath); String url = fastDFSClient.uploadBase64(faceFile); System.out.println(url); // 上传后会生成两个图,一大一小,文件名形式为: // "ashidaosdausiudfpoiuspdfiu.png" // "ashidaosdausiudfpoiuspdfiu_80x80.png" // 获取缩略图的url String thump = "_80x80."; String arr[] = url.split("\\."); String thumpImgUrl = arr[0] + thump + arr[1]; // 更新用户头像 Users user = new Users(); user.setId(userBO.getUserId()); user.setFaceImage(thumpImgUrl); user.setFaceImageBig(url); Users result = userService.updateUserInfo(user); return JSONResult.ok(result);
service