上传图片到数据库

155 阅读1分钟

先写从前端获取图片后将其上传至数据库的代码,代码可以完成图片向数据库上传数据,但并不是特别完善,仅供参考,其中有很多代码是在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解决了很多问题,但总体而言无论是前端还是后端缺乏的知识都很多,做的也很慢,打击信心。感觉还是自己跟着开源项目做,效率最高,学东西也最快。