富文本保存的base64字符串转换成图片并保存到OSS

本文主要讲述了项目中遇到的问题:富文本保存的base64图片导致数据库压力过大,进而提出将base64字符串转换为图片并上传到OSS的解决方案,包括正则匹配base64数据、上传OSS及替换字符串。
摘要由CSDN通过智能技术生成
1. 问题

最近在项目中由于疏忽,遇到了一件刚上线就比较棘手的事: 富文本保存图片,前端直接保存图片base64数据到服务器,导致产生大量的数据,直接导致数据库打不开,上线之后页面刷新超慢,平均查询一个商品详情要10s-20s,简直忍无可忍。

2. 思路
  1. 富文本base64格式数据:<p><img src="https://img-blog.csdnimg.cn/2022010705324888670.jpeg"></p>
  2. 将数据中的base64格式数据根据正则匹配出来,参考:base64正则
  3. 将base64图片数据上传到oss
  4. 将富文本数据的base64字符串中的图片数据替换成url
3. 代码
  • 提取字符串中的base64数据
    /**
     * base64数据替换成oss上传后的图片路径
     * @param data base64图片数据
     * @param fileId 商品id
     * @return 替换后的字符串
     */
    public static String replaceBase64(String data, String fileId){
   
        String pa = "data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?";
        Pattern pat = Pattern.compile(pa);
        Matcher matcher = pat.matcher
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值