Spring Boot 将image/png;base64格式图片以文件形式存储,并以url替换html文本src的内容

本文介绍了如何在Spring Boot应用中处理image/png;base64格式的图片,将其上传到服务器并替换html img标签的src,以适配discuzQ论坛的显示需求。通过Jsoup解析HTML,Base64转文件,然后通过论坛API发布包含图片的主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

功能需求的背景和可以解决的问题:
(1)存在两个服务,本平台(spring boot)和discuzQ论坛(PHP)。需要将本平台中录上的问题,包括标题,问题,解答等等内容,在平台测推送至论坛当中,并展现。
(2)平台和论坛两个服务对问题的格式显示有所不同,文本的影响并不大,主要影响点就在图片。平台上的图片是以image/png;base64的形式来展现的,论坛显示html文本并不支持此种格式的显示,此为需要解决的问题。

功能需求流程大体为:
(1)在本平台中获取到已经存储好的问题详情的html内容,此内容包含image/png;base64图片
(2)通过Jsoup,获取到html文本中img src的内容
(3)通过base64转换方式生成文件字节流,上传至论坛指定目录
(4)根据论坛服务生成访问图片url,并使用Jsoup替换
(5)spring boot 发送post请求,调用论坛发布主题接口,完成主题添加


一、数据准备

从平台中获取到问题详细内容,比如说有文本有image/png;base64图片:

String strData = "<p>以下为译文:</p><p>JavaScript的框架数量非常多,而且几乎每隔几个月就会有新的框架问世。我知道有些人对于层出不穷的JavaScript框架感到厌烦,因为这些新框架真的太多了。不过,还是有人坚持使用vanilla JavaScript。</p><p>这些JavaScript框架的出现实际上是为了方便开发者,帮助他们提高效率,使其能够产出更好的代码。</p><p>不过我想不仅仅是我,其他人也可能注意到了,这些框架随着时间的推移变得越来越复杂,反而失去了一些本应该带给开发者的好处——即节省开发者的时间。</p><p>我尝试的第一个框架是Angular 1,我花了相当多的时间来学习它。在那个时代,它非常棒。接着Angular 2出现了。Angular 2让我觉得它变得“焕然一新”(也许因为我当时是JavaScript的新手),感觉像是又重新学了个完全不同的框架。</p><p>后来,我又尝试使用了React,但感觉它太复杂了,甚至一开始就不符合我的需求。虽然这么说,但是不可否认的是,React依然是一个好的框架,只是不适合我。我认为React适合像Facebook这样的大型应用,但是不适合我这样创建只有少数人使用的简单网络应用的人。(这个观点可能不那么“讨喜”)</p><p>然后我又转向了Vue,对我来说,Vue是一股清流——它不需要我设置复杂的开发工具,只需要插入一个脚本标签,就能快速开始项目。</p><p class=\"ql-indent-1\"><img src=\"data:image/png;base64,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值