首页 > 其他分享 >静态文件生成

静态文件生成

时间:2023-07-04 11:25:05浏览次数:33  
标签:文件 java 静态 生成 content 文章 import article com

文章端创建app相关文章时,生成文章详情静态页上传到MinIO中

审核文章——feign远程——>修改或创建app相关数据——异步——>生成静态文件

                    文章微服务

 

自媒体用户发布文章后 审核成功后将 异步 feign 远程调用文章微服务,在文章微服务中有个方法将通过审核的文章保存或修改文章,以供移动端app用户查看。因此将生成静态文件的模块放到此方法中:保存或修改完成后,生成文章静态详情页上传到MinIO中。

在文章微服务引导类上开启异步调用

package com.heima.article.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.heima.article.service.ApArticleService;
import com.heima.article.service.ArticleFreemarkerService;
import com.heima.file.service.FileStorageService;
import com.heima.model.article.pojos.ApArticle;
import freemarker.template.Configuration;
import freemarker.template.Template;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@Slf4j
@Transactional
public class ArticleFreemarkerServiceImpl implements ArticleFreemarkerService {
    

    @Autowired
    private Configuration configuration;

    @Autowired
    private FileStorageService fileStorageService;

    @Autowired
    private ApArticleService articleService;

    /**
     * 生成静态文件上传到minIO中
     * @param apArticle  获取文章内容
     * @param content    静态文件名称含有aritlceId
     */
    @Async
    @Override
    public void buildArticleToMinIO(ApArticle apArticle, String content) {
        //已知文章id
        //1、获取文章内容
        if(content != null && StringUtils.isNotBlank(content)){
            //2、文章内容通过freemarker生成html文件
            Template template = null;
            StringWriter out = new StringWriter();
            try {
                template = configuration.getTemplate("article.ftl");
                //数据模型
                Map<String, Object> contentDataModel = new HashMap<>();
                contentDataModel.put("content", JSONArray.parseArray(content));
                //合成
                template.process(contentDataModel, out);
                
            } catch (Exception e) {
                e.printStackTrace();
            }
           
            //3、把html文件上传到minio中
            ByteArrayInputStream in = new ByteArrayInputStream(out.toString().getBytes());
            String path = fileStorageService.uploadHtmlFile("", apArticle.getId()+ ".html", in);
            //4、修改ap_article表,保存static_url字段
            articleService.update(Wrappers.<ApArticle>lambdaUpdate().eq(ApArticle::getId ,apArticle.getId())
                    .set(ApArticle::getStaticUrl, path));
            
        }
    }
}

 

标签:文件,java,静态,生成,content,文章,import,article,com
From: https://www.cnblogs.com/fxzm/p/17525235.html

相关文章

  • Python Django 零基础从零到一部署服务,Hello Django!全文件夹目录和核心代码!
    在这篇文章中,我将手把手地教你如何从零开始部署一个使用Django框架的Python服务。无论你是一个刚开始接触开发的新手,还是一个有经验的开发者想要快速了解Django,这篇教程都会为你提供一条清晰的路径。我们将从环境搭建开始,一步一步地创建一个可以处理GET和POST请求的服务,让你能在实......
  • 如何通过Java读取到Windows系统日志evtx文件
    近日公司有个需求,需要调研如何使用Java来读取Windows日志文件(类型:应用程序,安全,Setup,系统)一番调研以后,在仅使用java的基础上系统日志文件似乎不太可能(就个人调研结果来看),再通过多渠道查询(百度、chargpt),找到2个可能的实现的方案:1、使用Java来调用C++方法JNA(JavaNativeAccess)......
  • 为什么Unity使用AssetBundle热更的时候要剔除掉.mainfest文件
    1)为什么Unity使用AssetBundle热更的时候要剔除掉.mainfest文件​2)Addressable热更,断点续传问题3)在线性空间,使用后处理解决UI混合问题这是第341篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。UWA社区主页:comm......
  • rsync 遇到中文乱码文件名无法同步,并报错:rsync: rename "/test1/abc/abc/opt/abc/abc/
    rsync遇到中文文件名乱码报错报错如下:rsync:rename"/test1/abc/def/efg/abc-V2/img_abc/.δ\#261\#352\#314\#342-3.jpg.wdPu5C"->"event/abc-V2/img_abc/δ\#261\#352\#314\#342-3.jpg":Input/outputerror(5)rsync:rename"/test1/abc/def/e......
  • C# 文件移动
     将文件从文件夹A移动到文件夹B并按规则重命名//<summary>///将文件移动到指定目录///<paramname="sourceFilePath">需要移动的源文件的绝对路径</param>///<paramname="descDirectoryPath">移动到的目录的路径</param>///<paramname="n......
  • 本地搭建证件照片排版生成器
    1概述使用PHPStudy在本地搭建一个证件照片排版生成器。步骤:使用PHPStudy创建网站所需环境——>下载源码并进行修改——>修改php.ini配置文件——>创建网站,成功搭建!2详情2.1搭建环境打开下面的下载地址,进行下载安装。https://www.xp.cn/download.html2.2......
  • 拉完代码之后只有一个空文件夹
    1.在编辑器中打开终端,进入文件夹,输入指令```ls-a```返回```....git```2.输入以下指令显示所有分支,找到自己需要的。```gitbranch-r```3.输入以下指令切换所需分支```gitcheckout分支名```4.此时项目文件即出现在目标文件夹中。......
  • 常见证书文件如何转成crt和key格式
    1常见证书文件*.DER或*.CER文件:该文件是二进制格式,它只含有证书信息,不包含私钥。*.CRT文件:该文件是二进制格式或文本格式,它也只含有证书信息,不包含私钥。*.PEM文件:该文件是文本格式,它一般存放证书或私钥,或同时包含证书和私钥。*.PEM文件如果只包含私钥,一般用*.KEY文件代替。*.PF......
  • OnlyOffice文件回调接口net core 版本
    publicclassOfficeFilesController:BaseController//Controller{///<summary>///保存OnlyOffice文件///</summary>[HttpPost]publicvoidSaveOnlyOfficeFile(){varfileDataJson=string.Em......
  • 当使用POI打开Excel文件遇到out of memory时该如何处理?
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。当我们开发处理Excel文件时,ApachePOI是许多人首选的工具。但是,随着需求的增加、工程复杂,在打开复杂的Excel文件的时候可能会出现一些异......