springboot整合项目-商城个人头像上传功能

上传头像的功能

持久层

1.sql语句的规划 avatar varchar(50) str - 字节流

将对象文件保存在操作系统上,然后在把这个文件的路径个记录下来,保存在avatar中,因为相比于字符流会更加的方便,将如果要打开这个文件可以依据这个路径去找到合格文件。在数据中只需要保存这个文件饿路径即可。将静态资源资源(图片、音频)放在某台电脑上,
在把这个电脑作为一台单独的服务器使用

对应的是一个更新用户avatar字段的sql预计

update  set avatar =? ,modified_user+?,modified_time = ?  where uid = ?
2.设计接口和抽象方法 UserMapper 用于修改用户的头像
/**
     *
     * @param uid
     * @param avatar
     * @param modifiedUser
     * @param modifiedTime
     * @return
     *
     * @param ("sql映射文件中#{}占位符的变量名"):解决问题:当sql语句的占位符和映射的接口方法参数不一致是,需要将某个参数强行注入到某个占位符变量上时,可以使用@param这个注解来标注映射的关系。
     */
    Integer updateAvatarByUid(@Param("uid") Integer uid,
                              @Param("avatar") String avatar,
                              @Param("modifiedUser") String modifiedUser,
                              @Param("modifiedTime") Date modifiedTime);
3.接口的映射

UserMapper.xml 书写sql语句

业务层

1.异常的定义

1.cookie失效 or isdelete == 1 - 用户不存在
UserNotFoundException
2.更新的时候,又有可能会有各种位置的异常产生。 updateException

无需开发
2.具体业务方法
@Override
    public void changeAvatar(Integer uid, String avatar, String username) {
        // 建议查询当前的用户是否存在
        User result = userMapper.findByUid(uid);
        if (result == null || result.getIsDelete().equals(1)) {
            throw  new UsernameNotFoundException("用户数据不存在");
        }
        //上传头像
        Integer integer = userMapper.updateAvatarByUid(uid, avatar, username, new Date());
        if (integer != 1) {
            throw  new UpdateException("更新时产生了未知的错误");
        }

    }

控制层

1.异常处理:

FileLoadException 泛指文件上传的异常 继承runtimeException异常
父类是:FileLoadException
FileEmptyException 文件为空的异常
FileSizeException 文件大小超出限制
FileTpeException 文件类型异常
FileUploadIoException 文件读写异常

else if (e instanceof FileEmptyException) {
            result.setState(6000);
            result.setMessage("上传文件为空的异常");
        }else if (e instanceof FileSizeException) {
            result.setState(6001);
            result.setMessage("文件大小超出限制的异常");
        }else if (e instanceof FileStateException) {
            result.setState(6002);
            result.setMessage("文件状态不符合的异常");
        }else if (e instanceof FileUploadIoException) {
            result.setState(6003);
            result.setMessage("文件读写错误的异常");
        }else if (e instanceof FileTypeException) {
            result.setState(6004);
            result.setMessage("文件类型异常的异常");
        }

需要在baseController需要添加对异常的统一处理

2.设计请求

/users/update_avatar
/post (get:2kb)
/ HttpSession session MultipartFile file
/JsonResult

3.实现方法

前端页面

在upload页面进行编写功能

enctype="multipart/form-data" 如果直接使用表单进行上传,需要给表单显示的添加一个属性enctype=multipart/from-data声明出来,不会将目标的数据做修正在上传,不同的字符串。

解决bug

1.更改默认的大小限制

springmvc默认为1mb的文件可以进行上传,手动的去修改springmvc默认上传的文件的大小
1.在配置文件中进行配置
2.采用java代码的形式来设置文件的上传大小的限制,主流中进行配置,可以定义一个方法,必须使用@bean修饰来修饰,在类的前面添加@configation注解进行修饰,返回值必须是MultipatConfigation

2.将上传的图片在网页中进行展示
3.登录后显示头像

可以更新头像成功后,将服务器返回的头像路径保存在客服端cookie对象,然后每次检测到用户打开上传头像页面,在这个页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值