上传用户头像-后端

每个网站中都有用户头像的上传功能,刚刚再刷后springboot项目有些心得分享一下,如某站上的电脑商城的项目为例,先给出它的数据库

         其中avatar字段名就是用户存储在服务器端的图片的地址,这个表在上传用户头像时要更改的字段名是修改时间(modified_time),修改者(modified_user)和avatar,用户通过seesion存储登陆用户的uid,再通过存储在session中的uid进行对用户查询,再进行上传头像功能

<!--    上传头像所用到的mapper映射--><update id="updateAvatar">UPDATE t_user SET avatar=#{avatar},modified_user=#{modifiedUser},modified_time=#{modifiedTime} WHERE uid=#{uid}</update>

        个人觉得用mapper映射文件可以更熟练的掌握其中的原理,以及更好的掌握SQL语句

 /*** 上传用户头像* @param user 用户数据,uid,avatar,modified_user,modified_user* @return 受影响的行数(通过受影响的行数来判断插入数据是否成功。*/Integer updateAvatar(User user);

UserService接口,在控制层对user对象进行封装,再将封装好的User对象传入到UserService中,封装User对象应该在Service层进行封装,我觉得传入的参数有点多可能会弄混,所以就在控制层进行封装了

 User uploadAvatar(User user);

UserService实现类,在Service类中通过调用自动导入的Mapper对象,对数据库进行操作,返回的是受影响的行数,返回一就是成功了,是其他的就是失败了

    @Overridepublic User uploadAvatar(User user) {log.info(user.toString());Integer row=userMapper.updateAvatar(user);if(row !=1){throw new updateException("上传用户头像出现未知异常");}return user;}
     //设置上传文件的最大大小public static final  int MAX_SIZE=10*1024*1024;//设置文件的类型public static final List<String> AVATAR_TYPE=new ArrayList<>();static {AVATAR_TYPE.add("image/png");AVATAR_TYPE.add("image/gif");AVATAR_TYPE.add("image/bmp");AVATAR_TYPE.add("image/jpg");}@PostMapping("/change_avatar")public JsonResult<String> uploadAvatar(HttpSession session, MultipartFile file){//MultipartFile是spring提供的类,可以接收所有的文件的类Integer uid = getUidFromSession(session);User byUid = userMapper.findByUid(uid);if(byUid.getIsDelete().equals(1)&&byUid==null){throw new userNameNotExistsException("用户不存在");}if(file.isEmpty()){throw new FileEmptyException("请选择文件");}if (file.getSize() >MAX_SIZE){//file.getSize()获取接收文件的大小throw  new FileSizeException("文件大小超出最大限制");}if(!AVATAR_TYPE.contains(file.getContentType())){//自定义接收文件的类型throw new FileTypeException("文件类型不匹配");}String uploadPath = session.getServletContext().getRealPath("upload");//获取上传文件的路径(获取项目中名为‘upload’的文件夹)log.info(uploadPath);File dir=new File(uploadPath);//指向名为‘upload’文件夹if(!dir.exists()){dir.mkdirs();//若不存在,则创建该文件夹}String originalFilename = file.getOriginalFilename();//获取文件的真实文件名int index = originalFilename.lastIndexOf(".");//获取文件的后缀名‘.’的位置String substring = originalFilename.substring(index);//返回文件类型名 例如:.jpgString filename = UUID.randomUUID().toString().toUpperCase()+substring;//新创建的文件名File dest=new File(dir,filename);//创建一个空的文件try {file.transferTo(dest);} catch (IOException e) {throw new FileUploadIOException("文件存储出现异常");}catch (FileStateException e){throw new FileStateException("文件被打开,请关闭后再上传");}String RealFilePath="/upload/"+filename;Date date=new Date();User user=new User();user.setUid(uid);user.setModifiedTime(date);user.setModifiedUser(byUid.getUsername());user.setAvatar(RealFilePath);userService.uploadAvatar(user);return new JsonResult<String>(OK,RealFilePath);//返回图片存储在服务器的地址}

以上就是上传头像的所有代码展示啦,如果有什么错误请留言指示我会改正(我是刚入Java的小白)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49558.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

头像上传功能

头像上传 A> MultipartFile接口 MultipartFile接口常用的的API见下表&#xff1a; 方法功能描述String getOriginalFilename()获取上传文件的原始文件名&#xff0c;即该文件在客户端中的文件名boolean isEmpty()判断上传的文件是否为空&#xff0c;当没有选择文件就直接…

3.用户上传头像

还是三层架构&#xff0c;首先考虑数据访问层&#xff0c;这一层没有什么处理&#xff0c;因为是把头像存到硬盘里没有存到数据库里&#xff1b;业务层需要就是上传完头像后更新headurl&#xff0c;服务端就需要提供一个改变头像路径的功能&#xff1b;上传文件这个事就在contr…

个人资料上传头像模块,拍照+图库+图片剪裁+圆形头像

先看效果图: 注意: 因为模拟器的原因裁剪图片的页面只能拖拽,实际在手机上是可以放大旋转等操作的 实现思路: 1.三个自定义的view,分别是圆形的Imageview,可拖拽放大旋转的Imageview,裁剪图片的view(裁剪页面的矩形) 2.点击主界面的上传头像,开启一个透明的透明的Activity,在…

vant 列表组件:App我的、个人中心(含头像、手机号、用户名、点击交互)

案例截图&#xff1a; <template> <div class"app-container"><!-- 导类栏 --><van-nav-bartitle"我的"left-arrowclick-left"$router.back()"/><!-- 我的 --><div class"wii-user-head"><!--…

Android开发之用户头像上传

一&#xff0c;概述 本篇博客总结一下自己在开发过程中应用到的一些知识&#xff0c;在本篇博客中带领大家完成用户头像选择或者拍照上传&#xff0c;并对图片进行大小的压缩&#xff0c;和形状的控制&#xff0c;可以将用户选择到的图片裁剪成圆形上传。 ok&#xff0c;我们开…

X站全称是什么_考不上高中上什么专业

商洛考不上高中上什么好处 高职和大专区别是什么&#xff1f;高职不如大专吗&#xff1f;高职毕业是否可以续读本科&#xff1f;高职毕业只能做工人吗&#xff1f;高职和大专的主要区别在分为学习内容上的不同以及表达内容等方面的不同&#xff0c;但是本质上并没有区别&#x…

一文搞清到底什么是 .NET?

现在各种 .NET 满天飞&#xff0c;别说新手了&#xff0c;连我这样的老手都差点被绕进去。到底什么是 .NET 呢&#xff1f;《通俗易懂&#xff0c;什么是.NET?什么是.NET Framework&#xff1f;什么是.NET Core? 》这篇文章好长呀&#xff0c;不知道你看完了没有&#xff0c;…

中台,都他妈被你们说糊涂了,文内才是正宗解释,别摸石头过河了,石头早就有了...

&#xff08;1&#xff09;我们先说说技术架构分层 我们按技术架构通常是这样的&#xff1a; 1、UI交互层&#xff1a;Windows UI、PC Web UI、移动App UI、微信小程序UI、摄像头视觉识别人机界面、语音交互人机界面 2、逻辑层&#xff1a;面向对象技术/组件技术/SOA服务中间件…

Vue与React不是真正的响应式编程,Svelte才是正宗

这个题目可能有点夸张&#xff0c;但不管怎样 Svelte 和它的理念就是这样的。如果你还没听说过 Svelte 的话就去了解一下吧——你会见证一场革命的&#xff0c;它将取得空前的成就&#xff08;没有给 Svelte 团队增加压力的意思&#xff09;。 本文不是 Svelte 的入门教程。Sv…

mysql是怎样运行的 从根儿 百度云_读书笔记-MySQL 是怎样运行的:从根儿上理解 MySQL...

mysqld_safe mysqld_safe是一个启动脚本&#xff0c;它会间接的调用mysqld&#xff0c;而且还顺便启动了另外一个监控进程&#xff0c;这个监控进程在服务器进程挂了的时候&#xff0c;可以帮助重启 它。另外&#xff0c;使用mysqld_safe启动服务器程序时&#xff0c;它会将服务…

MariaDB: 谁是更为正宗的MYSQL

随着Oracle买下Sun&#xff0c;MySQL也落入了关系型数据库王者之手。而早在2009年&#xff0c;考虑到Oracle的名声以及其入手之后闭源的可能性&#xff0c;MySQL之父的Michael便先行一步&#xff0c;以他女儿Maria的名字开始了MySQL的另外一个衍生版本&#xff1a;MariaDB。 Mi…

区块链入门教程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 区块链&#xff08;blockchain&#xff09;是眼下的大热门&#xff0c;新闻媒体大量报道&#xff0c;宣称它将创造未来。 可是&#xf…

真的会谢,ChatGpt能不能靠谱点

我想让GPT帮我生成一个可以实现一根绳子抖动的效果。 一直沟通&#xff1a; 然后它给我生成了一段还是达不到效果的代码&#xff0c;并且代码还不全&#xff01; 本来我想要这种&#xff1a;TweenMax结合elastic-progress的弹性进度条动画 但是ChatGPT给我的代码最后效果是&a…

本科计算机论文致谢词,有关本科毕业的论文致谢词范文

有关本科毕业的论文致谢词范文 本科毕业论文致谢范例一 时间如梭,转眼毕业在即。回想在大学求学的四年,心中充满无限感激和留恋之情。感谢母校为我们提供的良好学习环境,使我们能够在此专心学习,陶冶情操。谨向我的论文指导老师王副教授致以最诚挚的谢意!王老师不仅在学业上…

计算机专业毕业设计致谢,那些笑哭的毕业论文致谢

原标题&#xff1a;那些笑哭的毕业论文致谢 相比正文的废话连篇&#xff0c;冗长乏味&#xff0c;致谢完全可以成为论文的弹幕&#xff0c;专供吐槽。咱们的致谢不用非得把七大姑、八大姨都拉出来感谢一番&#xff0c;像下面这些言语上既诙谐又大胆的致谢言辞&#xff0c;小编就…

html实训报告致谢,毕业论文致谢信(精选10篇)

毕业论文致谢信(精选10篇) 大学生活将要谢下帷幕,我们都知道毕业前要通过毕业论文,毕业论文是一种有准备、有计划的检验大学学习成果的形式,那么优秀的毕业论文是什么样的呢?下面是小编为大家收集的毕业论文致谢信(精选10篇),供大家参考借鉴,希望可以帮助到有需要的朋友。…

html项目的致谢词,毕业论文致谢词范文200字(精选10篇)

毕业论文致谢词范文200字(精选10篇) 导语:大学三年学习时光已经接近尾声,在此我想对我的母校,我的父母、亲人们,我的老师和同学们表达我由衷的谢意。下面是小编整理的毕业论文致谢词范文200字,欢迎参考借鉴! 毕业论文致谢词1 首先感谢学校为作者提供了深造的机会,在四年…

中科院博士论文致谢感人,如果让AI来写又会是怎样

今天&#xff0c;达摩院发布全球最大规模的 中文文本预训练语言模型——PLUG PLUG的参数规模达270亿 它集语言理解与生成能力于一身 在小说创作、诗歌生成、 智能问答等领域表现突出 还以80.614分刷新了CLUE分类榜单纪录 排名仅次于“人类”组 今天阿云也挑了几部经典作品…

matlab论文致谢,2020大学毕业论文致谢信

2020大学毕业论文致谢信 论文致谢词的作用主要是为了表示尊重所有合作者的劳动&#xff0c;它有利于促进形成相互帮助的社会风气。下面是小编为大家精心准备的2020大学毕业论文致谢信&#xff0c;仅供大家参考阅读&#xff01; 2020大学毕业论文致谢信1 我选择了周老师的课题&a…

计算机专业毕业设计致谢,计算机毕业论文致谢范文3篇

计算机毕业论文致谢范文3篇 计算机是20世纪最先进的科学技术发明之一&#xff0c;对人类的生产活动和社会活动产生了极其重要的影响并以强大的生命力飞速发展它的应用领域从最初的军事科研应用扩展到社会的各个领域&#xff0c;已形成了规模巨大的计算机产业带动了全球范围的技…