5

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

 1 year ago
source link: https://www.cnblogs.com/wiseleer/p/16860048.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上传头像的功能

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

2752646-20221105134634432-1628741253.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK