没有文件服务器,头像存哪里合适

这篇具有很好参考价值的文章主要介绍了没有文件服务器,头像存哪里合适。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

没有文件服务器,头像存哪里合适

视频在bilibili:没有文件服务器,头像存哪里合适

1. 背景

之前有同学私信我说,他的项目只是想存个头像,没有别的文件存储需求,不想去用什么Fastdfs之类的方案搭建文件服务器,有没有更简单且无需后期维护的方案,我喝了一口过期的开水,想了下,还真有,现在就给大家介绍一下。

这个方案就是把头像存在表里,但是要切记,不要存大图,否则会严重影响数据库性能,怎么确保这一点呢,其实只要对上传的图片转成缩略图就可以保证存进去的是小图,这样的话这个方案就比较完美了。

2. 关键步骤梳理

2.1 数据库设计

字段的类型应该是blob, blob是一种二进制存储类型,用来存储图片完全是没问题的

没有文件服务器,头像存哪里合适,spring boot,java,文件存储

2.2 后端接口

  1. Controller

    @Operation(summary = "修改头像")
    @PostMapping("/avatar")
    public Result<?> updateAvatar(MultipartFile file, @RequestParam("userId") Integer userId) throws IOException, SQLException {
    
        // 读取上传的原始图片
        BufferedImage originalImage = ImageIO.read(file.getInputStream());
    
        // 创建缩略图
        int thumbnailSize = 200;
    
        // 计算缩略图的宽度和高度,保持原宽高比例
        int newWidth, newHeight;
        if (originalImage.getWidth() > originalImage.getHeight()) {
            newWidth = thumbnailSize;
            newHeight = thumbnailSize * originalImage.getHeight() / originalImage.getWidth();
        } else {
            newWidth = thumbnailSize * originalImage.getWidth() / originalImage.getHeight();
            newHeight = thumbnailSize;
        }
    
        // 创建缩略图
        BufferedImage thumbnail = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics2D = thumbnail.createGraphics();
        graphics2D.drawImage(originalImage, 0, 0, newWidth, newHeight, null);
        graphics2D.dispose();
    
        // 裁剪成以图片中心为中心的正方形,因为前端是以正方形显示
        int x = 0;
        int y = 0;
        int cropSize = Math.min(newWidth, newHeight);
        if (newWidth > newHeight) {
            x = (newWidth - cropSize) / 2;
        } else {
            y = (newHeight - cropSize) / 2;
        }
        thumbnail = thumbnail.getSubimage(x, y, cropSize, cropSize);
    
    
    
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        ImageIO.write(thumbnail, "jpg", bs);
        byte[] thumbnailBytes = bs.toByteArray();
    
        userService.updateAvatar(userId,thumbnailBytes);
        return Result.success();
    }
    
    
    
    @Operation(summary = "查询头像")
    @GetMapping("/avatar")
    public Result<?> getAvatar(@RequestParam("userId") Integer userId){
        byte[] arvatarData =  userService.getAvatar(userId);
        return Result.success(arvatarData);
    }
    
  2. Service

    @Override
    public void updateAvatar(Integer userId, byte[] avatar) throws SQLException {
        log.debug("avatar: " + avatar.length);
        SerialBlob avatarBlob = new SerialBlob(avatar);
        userMapper.updateAvatar(userId,avatarBlob);
    }
    
    @Override
    public byte[] getAvatar(Integer userId) {
        User user = userMapper.selectById(userId);
        return user.getAvatarData();
    }
    
  3. Mapper

    @Update("update wj_user set avatar_data=#{avatarBlob} where id = #{userId}")
    void updateAvatar(Integer userId, Blob avatarBlob);
    

3 前端关键代码

没有文件服务器,头像存哪里合适,spring boot,java,文件存储文章来源地址https://www.toymoban.com/news/detail-861393.html

到了这里,关于没有文件服务器,头像存哪里合适的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023腾讯云服务器双十一优惠价格表看看合适不?

    2023腾讯云双十一优惠活动服务器特价多配置报价2核2G3M、2核2G4M、2核4G5M、2核4G5M、4核8G12M、8核16G18M和16核32G28M,目前腾讯云双11价格还没出来,阿腾云根据目前2核2G3M配置95元一年预测双11价格可能是88元一年,整理大概有个10%的优惠幅度,阿腾云atengyun.com来预测下2023年腾讯云

    2024年02月07日
    浏览(49)
  • 显卡服务器的特点和优势在哪里

    随着科技的发展以及人们对于计算机性能的需求提高,显卡服务器是主要使用图形处理器进行计算和运算,拥有更加强大的计算能力,今天小编就来给大家讲一讲显卡服务器的特点和优势是什么! 1.高可靠性:显卡服务器采用高品质的硬件和软件的组合,所以在长时间内都可

    2024年02月06日
    浏览(47)
  • 微信小程序新版头像昵称API [保存用户头像到服务器]

     根据微信官方文档的说法,2022年10月之后,原本的获取昵称和头像的api,也就是wx.getUserProfile和wx.getUserInfo将停止支持,在那之后发布和更新的小程序必须停止使用这两个api。  这两个api获得的用户头像均为一个url,指向网络上的一个头像图片。前端获取该链接后可通过wx.

    2024年02月13日
    浏览(40)
  • 腾讯云服务器配置怎么选择?CPU内存带宽系统盘如何选合适?

    腾讯云服务器配置包括CPU内存、公网带宽和系统盘,云服务器分为CVM服务器和轻量应用服务器,腾讯云服务器网来详细说下腾讯云服务器配置怎么选择?到底是选择云服务器CVM还是轻量应用服务器?CPU内存选择几核几G?公网带宽多大合适?云服务器系统盘类型怎么选择? 目

    2024年02月11日
    浏览(58)
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步,服务器处理器的性能在不断攀升。其中,Intel的E5和I9系列处理器在业界具有广泛的影响力。而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择,下面我跟大家分享一下E5跟I9有什么区别,方便我们在选择的时候有一个方向去

    2024年01月24日
    浏览(58)
  • 【解决方法】错误:无法和SFTP服务器建立FTP连接,请选择合适的协议

    在家连实验室的服务器时,出现了如下的情况:当时一直在想为啥协议不合适。 1. 点击【文件】-【站点管理器】,出现如下界面: 可能你的那里没有新站点,如果没有就点击新站点哦。 2. 点击【协议】,选择【SFTP-SSH File Transform Protocol】协议。   3. 输入【IP地址】和【端口

    2024年02月06日
    浏览(52)
  • Spring boot实现上传文件至本地或服务器

    大家好 我是程序猿小张 图片文件上传是项目中必不可少的一个功能,上传的地址也当然是优先选择第三方的对象存储,例如七牛云、阿里云等等,但是当中的话只有七牛云是有一个免费额度的,其他都是要收钱的。所以就想着,哎,这个能不能上传到本地呢?答案是肯定可

    2024年02月11日
    浏览(62)
  • Spring MVC异步上传、跨服务器上传和文件下载

    之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 编写JSP页面,引入jQuery和jQuery表单上传工具jquery.form.js【该js文件已经

    2024年02月16日
    浏览(48)
  • react18中antd的Upload组件上传头像,并且拿到服务器返回的头像的url地址在页面中显示头像

    业务需求:上传头像,上传完毕后拿到头像的url,把头像展示在页面中,最终把头像url和其他用户信息一起发送给服务器   上传头像流程   导入 Upload 组件和图标(一个加号,一个加载中)   定义状态   定义一个上传状态组件,上传前显示 + 号,上传时显示loading   组件代码(

    2023年04月22日
    浏览(38)
  • 适用于深度学习的GPU服务器选RTX4090与RTX3090哪个更合适、更划算?

    一、弄清基本参数对比 RTX 4090 具有 760 亿个晶体管、16384 个 CUDA 核心和 24 GB 高速美光 GDDR6X 显存, 4090单精度浮点73TFLOPs RTX 3090 ,搭载了 10496 个流处理器与 24G GDDR6X 显存,带宽为 936GB/S。 3090单精度浮点35.7TFLOPs   二、以同等算力的情况做简单的对比 简单给大家算一下, 从单

    2024年02月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包