上传头像的功能

持久层

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

springboot整合项目-商城个人头像上传功能的更多相关文章

  1. 【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能

    作者:Dreawer链接:https://zhuanlan.zhihu.com/p/24465742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:梦游的龙猫(转 ...

  2. [Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能

    很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化&l ...

  3. qt实现头像上传功能

    想必大家都使用过qt的自定义头像功能吧,那么图1应该不会陌生,本片文章我就是要模拟一个这样的功能,虽然没有这么强大的效果,但是能够满足一定的需求. 图1 qq上传图片 首先在讲解功能之前,我先给出一片 ...

  4. SpringBoot整合Fastdfs,实现图片上传(IDEA)

    我们部署Fastdfs,就是为了实现文件的上传. 现在使用idea整合Fastdfs,实现图片上传 部署环境:Centos7部署分布式文件存储(Fastdfs) 利用Java客户端调用FastDFS ...

  5. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  6. SpringBoot整合FastDFS实现图片的上传

     文件的上传和预览在web开发领域是随处可见,存储的方式有很多,本文采用阿里巴巴余庆大神开发的FastDFS进行文件的存储,FastDFS是一个分布式文件存储系统,可以看我上一篇博文,有安装和配置教程 ...

  7. Django项目实战—用户头像上传

    1 将文件保存到服务器本地 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...

  8. TP5.0整合webuploader实现多图片上传功能

    在https://github.com/fex-team/webuploader 下载webuploader并解压,解压后放到public里面.其中我把解压缩后的文件夹改名为webuploader,放 ...

  9. php实现头像预览上传功能

    最近在做php第二阶段的项目,需要用到头像上传的功能 我们要完成头像上传功能,一共要写两个php页面,第一个页面我们叫做touxiang.php,第二个页面我们叫做upload.php 1.touxi ...

随机推荐

  1. C++ UAC 提权 以一个管理员身份运行程序

    这里是我编译的和一个测试Demo:http://pan.baidu.com/s/1qWNgC6C 大家如果看我下边的不是很清楚,可以下载这个具体工程: 群:103197177 C++进阶讨论:欢迎喜欢 ...

  2. CF1368G Shifting Dominoes (线段树)

    题面 有一个 n × m n\times m n×m 的棋盘,被 1 × 2 1\times 2 1×2 的骨牌覆盖,保证 2 ∣ n × m 2|n\times m 2∣n×m. 现在你需要执行以下 ...

  3. 【面试题】如何去掉vue的url地址中的#号?及其原理?

    如何去掉vue的url地址中的#号?及其原理? 点击打开视频讲解更加详细 如何去掉vue的url地址中的#号? import Vue from 'vue'; import VueRouter from ...

  4. BI如何配置“花生壳”,看这一篇就够了

    花生壳作为一款免费的内网穿透软件,在软件行业备受青睐.在做好产品的同时,如何让客户轻松看到,也是非常有必要的.本篇将带领大家使用"花生壳"软件完成BI数据分析的配置.第一步:下载安 ...

  5. Python入门系列(十)一篇学会python文件处理

    文件处理 在Python中处理文件的关键函数是open()函数.有四种不同的方法(模式)来打开一个文件 "r" - 读取 - 默认值.打开一个文件进行读取,如果文件不存在则出错. ...

  6. Dapr 证书过期了怎么办? 别慌,有救!

    一.背景 Dapr 默认证书有效时间是1年,证书过期后就不能执行相关控制面和数据面的交互了,如下图: 二.查看证书有效时间 通过dapr mtls expiry 看到期时间,具体参见命令https:/ ...

  7. 使用 Loki 进行日志报警(二)

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492374&idx=1&sn=d09f6db623 ...

  8. MySQL 的七种日志总结

    文章转载自:https://mp.weixin.qq.com/s/ewv7HskHvH3O7kFyOmoqgw 一.MySQL 日志分类 日志类别 说明 备注 错误日志 错误日志记录了当MySQL启动 ...

  9. Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 三)

  10. Beats:为 Beats => Logstash => Elasticsearch 架构创建 template 及 Dashboard

    文章转载自:https://elasticstack.blog.csdn.net/article/details/115341977 前一段时间有一个开发者私信我说自己的 Beats 连接到 Logs ...