先写从前端获取图片后将其上传至数据库的代码,代码可以完成图片向数据库上传数据,但并不是特别完善,仅供参考,其中有很多代码是在ChatGPT的辅助下写的。
前端传来文件和用户id,检查文件类型后,调用avatarModifyfan方法
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file,@RequestParam("userId") String userId ) {
if (file.isEmpty()) {
return "文件上传失败,请选择文件";
}
// 验证文件类型
String fileType = file.getContentType();
if (!fileType.equals("image/jpeg") && !fileType.equals("image/jpg")) {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"只能上传 JPG/JPEG 格式的图片");
}
// 文件处理逻辑
try{
byte[] avatarData = file.getBytes();
//传递UserId和文件数据
userService.avatarModify(userId,avatarData);
}catch (Exception e){
e.getMessage();
}
return "文件上传成功";
}
进行一系列判断后调用userMapper.avatarModify方法
@Override
public boolean avatarModify(String userId ,byte[] avatarData) {
//判断是否为空
if (avatarData == null){
throw new BusinessException(ErrorCode.NULL_ERROR);
}
//根据用户id更改用户头像
int i = userMapper.avatarModify(userId,avatarData);
if (userMapper.avatarModify(userId,avatarData) > 1){
return true;
}
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"修改头像时出错了,也许未成功向数据库中插入数据?");
}
UseMappper的avatarModify方法
public interface UserMapper extends BaseMapper<User> {
int avatarModify(@Param("id") String id, @Param("newAvatar") byte[] newAvatar);
}
UserMapper.xml相关方法
<update id="avatarModify" parameterType="map">
update user
set avatar = #{newAvatar}
where id = #{id}
</update>
数据库中avatar表的数据格式为longblob
//后话 原本是跟着一个其他同学的开源用户中心拓展功能,跟着练习中也加了一些自己的思想,后来想着自己增加一个修改用户头像的功能,完全自己摸索,其中使用ChatGPT解决了很多问题,但总体而言无论是前端还是后端缺乏的知识都很多,做的也很慢,打击信心。感觉还是自己跟着开源项目做,效率最高,学东西也最快。