600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Spring Boot 将image/png;base64格式图片以文件形式存储 并以url替换html文本src的内容

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

时间:2022-09-28 04:12:58

相关推荐

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

文章目录

前言一、数据准备二、图片上传指定服务器目录1. jsoup的方式解析出对应src内容2. base64图片上传指定服务器目录3. 更换src的内容为discuzQ论坛访问url 三、调用discuzQ论坛发布主题接口,完成主题添加1. spring boot 发送post请求 总结

前言

功能需求的背景和可以解决的问题:

(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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m1UsFss95ubmZq1fv14jIyOanp7Wxo0blUgk9OWXXxZcYykILgAVk81mVVNTo1QqpZs3b97xZ5FI5I73OrW0tOTaaPPvM4pEInrllVf03e9+d9n3RY2OjhYMjYaGBrW3t+vkyZNqa2tbdu11dXW59yN5nqe77ror9+dXr17Vww8/LEn67LPP1NDQoPr6ek1MTDjzeGOxmBKJhGZmZjQyMqIf/OAH8jxPU1NTmpycVDweV0NDg15//XXt2bNH3/zmN/P+O9FoVPX19dq9e7ck6dq1a0qlUrlW49jYmAYGBpZ8HCtBOQNAxUQiEcXjcXV2dt5RNpg/Y3nttdc0OTkpae4ifLv169drz549amlp0dWrV3Xt2rVl/83Tp0/npqR862lqatLWrVs1ODi47NpjsZiam5t18+ZNRaNRjY6O6uOPP9af//xnXb58WRMTE/rrX/+qI0eO6IknnnD68WazWW3cuFENDQ06d+6czp07l9u+XG6bL5VKaXJyMjelLdbY2KihoaFlH0uxCC4AFRWLxdTS0pKrYt/eRjtz5ozOnj2rNWvWaGxsTBcuXMi9+fV209PTGh8fz539zL/CX+zKlSs6c+aMvvGNbxRcz5o1a9TU1KTR0dFl3/Db0NCgtrY29fX1acOGDerq6tLFixfV1NSkBx98UMPDw7px44aeffZZNTc3O/l4871p+ebNm2pubs6tfam3DDQ1NSkajer111/X+Ph43q/veV7ua73//vsLWpClYKsQQEVFIhHV19drzZo1GhgYUHNzs6LRqPr6+nTkyBEdPnxYkUhE69at0+zsrK5fv666ujrV19crGo1qaGhIL730krZu3ar169dLmguUffv25bbjbt68qb6+Ph09elT79u1bsKWXT3NzsyYmJjQ8PLzsluHmzZv1/vvva82aNWptbVV7e3tu+27//v13nEO59njnCzSJRCJ3V5B//vOf2r17d65cMT09XXDqSiQSeu+99zQ1NaWurq47/nz++7Fnzx6NjIzo/Pnzy57dLYfgAlBxGzZs0Pj4uI4dO5ZroXmep8cee2zBXSsymYz+9Kc/6Q9/+IMmJiY0MTGheDyu3bt3L2jGHT9+XKdPn87972g0qqamJj366KN3vEE2XzFh/iJ87ty53LlMIevWrdMjjzyid955R8eOHVMsFlNNTY3Gxsa0du1afe9735PneU4/3vnHMTw8rBdffFFbt27V6OioTp48qR07dug73/lObqJc7Pz58/rkk0/0wx/+sOD3MBqNqqWlRUNDQ7lzz9Xg87gAVNWNGzc0MzOjRCJR8FV8NpvV6OiostmsGhoaVn2hK6cbN25oeno6N1UV8/eD+njn75E4MDCgDz/8UB9//LEeeeQRPRhJ1rAAAAD8SURBVPzww4pEIpqdndXf/vY3DQ4OqqOjQ/X19Wpvb1/w/3/ppZe0ffv2BduVp06d0qVLl/Stb30r999mZmZ05swZ/fGPf9Tjjz+uHTt2lLxuJi4AVVXMm38jkciqt5Mqpdg3L6/k7/v1eLPZrF5++WV98cUXuvfee/WTn/xE69aty/15TU2N9u3bp8nJSb399tv6+9//rh//+Me5YI1EInr66acXvNlYmrvt1OL/FovFtHXrVnmet+Lv4WJMXABg2K1bt4p+c/D8HT78RnABAJxCHR4A4BSCCwDgFIILAOAUggsA4BSCCwDgFIILAOAUggsA4BSCCwDglP8Bc5WOBQt55PMAAAAASUVORK5CYII=\"></p><p>(图源Vue.js官网)</p><p>学习起来也不是很复杂,而且它完全满足我的需求。所以Vue成了我心中的No.1框架,直到现在我仍然在使用它创建所有的东西。</p><p>再后来Vue 2出现了,其中有一些小的增量变化。而这时由于我已经有能力适应这些变化了,所以我并不在意这些改变。</p><p>另外还有一些别的框架,比如ViteJs和NuxtJs,我可以把它们作为基于Vue的框架使用,(我认为ViteJs现在已经独立于Vue,所以可以把它与其他框架如React和Svelte结合起来一起使用)。</p><p>没什么好抱怨的,因为从Vue 1切换到Vue 2也没有什么新东西需要学习的。</p><p>但是,更新换代似乎永远不会停止了。最近,Vue 3取代了Vue 2,成为默认版本。我相信开发者投入了大量的精力来开发和创造让Vue 3变得更好。</p><p>虽然从Vue 2迁移到Vue 3并不困难,但我觉得相比于Vue 1和Vue 2,Vue 3复杂了好几倍。Vue 3让我感觉好像丧失了生产力,而且使用Vue 1时享受的简单性似乎也不复存在了。</p><p>所以,为什么我们不能在使这些框架变得更好的同时,不使它们的使用变得更加复杂呢?这是不是不可能实现?</p><p>你是否遇到过这样的问题呢?你用过哪些好用的JavaScript的框架呢?欢迎留言告诉我们。</p>";

二、图片上传指定服务器目录

1. jsoup的方式解析出对应src内容

代码如下(示例):

Document document = Jsoup.parse(strData);Elements elements = document.getElementsByTag("img");String base64Image = el.attr("src");

这样就可以拿到src中图片base64的数据

2. base64图片上传指定服务器目录

代码如下:

/*** 将base64字符串,生成文件** @param fileBase64String* @param filePath 是指定论坛服务器的文件目录路径* @param fileName 是上传图片的名称,此处UUID生成* @return*/public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) {BufferedOutputStream bos = null;FileOutputStream fos = null;File file = null;try {File dir = new File(filePath);//判断文件目录是否存在if (!dir.exists() && !dir.isDirectory()) {dir.mkdirs();}String[] baseStrs = fileBase64String.split(",");BASE64Decoder base64Decoder = new BASE64Decoder();byte[] bfile = base64Decoder.decodeBuffer(baseStrs[1]);file = new File(filePath + File.separator + fileName);fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos);bos.write(bfile);return file;} catch (Exception e) {e.printStackTrace();} finally {if (bos != null) {try {bos.close();} catch (IOException e1) {e1.printStackTrace();}}if (fos != null) {try {fos.close();} catch (IOException e1) {e1.printStackTrace();}}}return null;}

注意:这里fileBase64String的参数,就是(1)中获取的base64Image,在上传中注意data:image/png;base64,iVBORw…传逗号后面的内容

3. 更换src的内容为discuzQ论坛访问url

代码如下,此处我连接第一步给一个整体示例:

/*** 替换image成url地址** @param strData*/public static String imageToFile(String strData){Document document = Jsoup.parse(strData);Elements elements = document.getElementsByTag("img");for (Element el : elements) {String base64Image = el.attr("src");String path = "上传discuzQ的目录路径";String name = UUID.randomUUID().toString().replaceAll("-", "") + ".png";File file = ImageToBase64Util.convertBase64ToFile(base64Image,path,name);String newUrl = "论坛服务器访问图片文件的路径,这个和上面的path不一定是同一个,注意服务器访问具体形式" + file.getName();el.attr("src",newUrl);}String newComment = document.body().toString();String result = newComment.substring(7, newComment.length() - 8);return result;}

newComment.substring(7, newComment.length() - 8);此处是自身业务需求,去掉了body标签,至此图文html已替换完成

三、调用discuzQ论坛发布主题接口,完成主题添加

1. spring boot 发送post请求

代码如下:

/*** post方式调用discuzQ接口保存数据** @param comment 这里就是已经替换过src内容的html文本* @throws Exception*/private static void postSendMessage(String comment) throws Exception {RestTemplate restTemplate = new RestTemplate();HttpHeaders headers = new HttpHeaders();MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");headers.setContentType(type);headers.add("Accept", "application/json, text/plain, */*");Theme theme = new Theme();theme.setTitle("平台推送问题");theme.setCategoryId(1);Content com = new Content();com.setText(comment);theme.setContent(com);HttpEntity<String> formEntity = new HttpEntity<String>(JSONUtil.toJsonStr(theme), headers);String url = "discuzQ论坛发布主题接口url";String result = restTemplate.postForObject(url, formEntity, String.class);JSONObject resultJsonObject = JSONObject.parseObject(result);if (resultJsonObject.get("Message").equals("接口调用成功")){System.out.println("接口调用成功");}else {throw new Exception("调用服务异常" + JSONUtil.toJsonStr(resultJsonObject.toJSONString()));}}

提示:这里本需求发送post请求到discuzQ论坛,是无登录状态模式下的推送,是根据自身业务已经调整过discuzQ论坛发布主题的源码,说明一下,如果想要发送发布主题,应该是需要登录信息等内容。

至此,在discuzQ论坛中可以显示:

推送问题,功能需求完成

总结

主要是对image/png;base64图片上传指定服务器目录,并生成相应src的url,以替换原先内容,以RestTemplate的方式推送信息,discuzQ可显示正常的图文内容,以上。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。