• 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对象,然后每次检测到用户打开上传头像页面,在这个页面


    __EOF__

  • 本文作者: wiselee
  • 本文链接: https://www.cnblogs.com/wiseleer/p/16860048.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    C语言中的自定义类型详解(结构体 + 枚举 + 联合(共用体))
    Docker网络
    无胁科技-TVD每日漏洞情报-2022-8-15
    安全生产:CVE-2020-11022/CVE-2020-11023漏洞解析
    数据库3-DDL语句数据库和数据表相关操作
    夯实算法-任务调度器
    jieba分词器使用指南
    Go----Go 语言基础之标识符、关键字、命名规范、变量、常量
    2024/4/24 C++day2
    c++11产生指定范围内均匀分布随机数、产生大量不重复随机数
  • 原文地址:https://www.cnblogs.com/wiseleer/p/16860048.html