当前位置: 首页 > news >正文

祝贺网站改版028网站建设工作室

祝贺网站改版,028网站建设工作室,wdcp wordpress伪静态,天猫seo搜索优化1前言九月太忙#xff0c;只更新了三篇文章#xff0c;本来这个功能是从九月初就开始做的#xff0c;结果一直拖到现在国庆假期才有时间完善并且写文章~之前我更新了几篇关于 Python 的文章#xff0c;有朋友留言问是不是不更新 .Net 了#xff0c;那肯定不能啊#xff0…1前言九月太忙只更新了三篇文章本来这个功能是从九月初就开始做的结果一直拖到现在国庆假期才有时间完善并且写文章~之前我更新了几篇关于 Python 的文章有朋友留言问是不是不更新 .Net 了那肯定不能啊我只能说「我 全 都 要」所以我反手就更新了一篇Asp-Net-Core开发笔记。然后顺便立个Flag今年底前完成StarBlog系列文章的主体部分即API开发后台前端开发目前只完成博客前后端部分加油吧~OK说回本文程序员都喜欢用Markdown来写文章但由于markdown是纯文本格式在其中插入的图片要如何保存就成了一大烦恼有人选择图床但不一定永久有效有人选择本地存储图片永久有效但如何分享文章又成了一个难题…我选的就是第二种本地存储。使用Typora写文章图片保存在和Markdown文件同名的目录markdown.assets下这样可以获得很好的写作体验然后分享的问题就交给StarBlog吧这个项目开发的初衷就是为了把本地的文章发表成博客。不过之前只有批量导入文章的功能现在我要做的就是单独实现一个单篇文章打包导入的功能。随着文章越来越多系列文章的目录放前面有点影响阅读了所以从这篇开始我把它放到最后面~2实现思路假设我用Typora写了一篇Markdown文章文件名为StarBlog.md并且在里面插入了若干图片根据配置Typora会自动生成一个目录StarBlog.assets来存放这些图片。为了实现导入我要把这个markdown文件和这个存图片的目录一起打包成zip压缩文件上传后端将zip压缩包解压到临时目录读取Markdown文件解析其中的内容进行导入操作。3代码实现OK开始写代码吧同时所有项目代码已经上传GitHub欢迎各位大佬Star/Fork博客后端前台项目地址https://github.com/Deali-Axy/StarBlog管理后台前端项目地址https://github.com/Deali-Axy/StarBlog-Admin解压缩首先是解压缩功能.Net标准库自带 ZipFile 这个库用于操作zip压缩包在 System.IO.Compression 里直接用就完事了。解压前得先把文件复制到临时目录并创建一个新的临时目录来放解压后的文件。在 Services/BlogServices.cs 里新增代码public async TaskPost Upload(PostCreationDto dto, IFormFile file) {// 先复制到临时文件var tempFile  Path.GetTempFileName();await using (var fs  new FileStream(tempFile, FileMode.Create)) {await file.CopyToAsync(fs);}// 设定解压用的临时目录var extractPath  Path.Combine(Path.GetTempPath(), StarBlog, Guid.NewGuid().ToString());// 使用 GBK 编码解压防止中文文件名乱码Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);ZipFile.ExtractToDirectory(tempFile, extractPath, Encoding.GetEncoding(GBK)); }本来直接 ZipFile.ExtractToDirectory() 就能解压了但如果压缩包里的文件用了中文名就得先设置编码。解析Markdown关于 C# 解析 Markdown 在本系列一开始就写过所以这里就不再当复读机了可以直接看这两篇文章基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入C#解析Markdown文档实现替换图片链接操作直接上代码了因为是做单篇文章导入所以我这里获取临时目录写的所有 *.md 文件之后只取第一个文件来处理理论上也不应该有多个~var dir  new DirectoryInfo(extractPath); var files  dir.GetFiles(*.md); var mdFile  files.First(); using var reader  mdFile.OpenText(); var content  await reader.ReadToEndAsync(); var post  new Post {Id  GuidUtils.GuidTo16String(),Status  已发布,Title  dto.Title ?? ${DateTime.Now.ToLongDateString()} 文章,IsPublish  true,Content  content,Path  ,CreationTime  DateTime.Now,LastUpdateTime  DateTime.Now,CategoryId  dto.CategoryId, };var assetsPath  Path.Combine(_environment.WebRootPath, media, blog); var processor  new PostProcessor(extractPath, assetsPath, post);// 处理文章标题和状态 processor.InflateStatusTitle();// 处理文章正文内容 // 导入文章的时候一并导入文章里的图片并对图片相对路径做替换操作 post.Content  processor.MarkdownParse(); post.Summary  processor.GetSummary(200);Markdown相关的处理我封装了 PostProcessor 这个对象在 StarBlog.Share 里。处理多级分类如果文章的分类不是一级分类那么把它上面的所有分类找出来一个个排好队方便后面处理。// 处理多级分类 var category  await _categoryRepo.Where(a  a.Id  dto.CategoryId).FirstAsync(); if (category  null) {post.Categories  0; } else {var categories  new ListCategory {category};var parent  category.Parent;while (parent ! null) {categories.Add(parent);parent  parent.Parent;}categories.Reverse();post.Categories  string.Join(,, categories.Select(a  a.Id)); }最后保存搞定~// 存入数据库 post  await _postRepo.InsertAsync(post);4系列文章基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目基于.NetCore开发博客项目 StarBlog - (3) 模型设计基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入基于.NetCore开发博客项目 StarBlog - (5) 开始搭建Web项目基于.NetCore开发博客项目 StarBlog - (6) 页面开发之博客文章列表基于.NetCore开发博客项目 StarBlog - (7) 页面开发之文章详情页面基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示基于.NetCore开发博客项目 StarBlog - (9) 图片批量导入基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流基于.NetCore开发博客项目 StarBlog - (11) 实现访问统计基于.NetCore开发博客项目 StarBlog - (12) Razor页面动态编译基于.NetCore开发博客项目 StarBlog - (13) 加入友情链接功能基于.NetCore开发博客项目 StarBlog - (14) 实现主题切换功能基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)基于.NetCore开发博客项目 StarBlog - (17) 自动下载文章里的外部图片基于.NetCore开发博客项目 StarBlog - (18) 实现本地Typora文章打包上传5参考资料https://www.cnblogs.com/liguix/p/11883248.html
http://www.pierceye.com/news/785117/

相关文章:

  • 下载软件的网站推荐thinkphp和wordpress
  • 青海省城乡和住房建设厅网站合肥小吃培训网页设计
  • 财经门户网站建设django校园网站开发
  • 泉州网站建设报价广东建设厅网站
  • 建设网站的源代码的所有权wordpress网站打开慢
  • 印度外贸网站有哪些家居小程序源码下载
  • 上海网站建设中心pc官方网站
  • 深圳企业网站制作公司查询西安网站设计哪家好
  • 大埔做网站手机qq邮箱发布了wordpress
  • 寻找南昌网站设计单位网站建设 中企动力医院
  • 中间商可以做网站吗平面广告设计师的工作内容
  • 网站建设用户分析做网站有什么软件
  • 洛阳网站建设启辰网络wordpress怎么破解查看
  • 长沙市网站设计公司厦门建设网站建站
  • 网站做链轮会被惩罚吗网站开发系统
  • 一般做企业网站需要什么资料WordPress情侣博客模板
  • 网站开发教程公司哪些官网用wordpress
  • redis网站开发教程创建app软件
  • 企业网站新闻wp怎么做合肥环保公司网站建设
  • 怎么仿一个复杂的网站wordpress描述怎么改
  • php 如何用op浏览器开发手机网站app开发制作哪种快
  • 网站维护主要有哪些内容和方法网页制作需要学多久
  • 机械加工网站模板做蛋糕比较火的网站
  • 网站的折线图怎么做四川省建设厅官方网站
  • 域名备案 个人 网站基本信息查询wordpress mysql缓存
  • 优秀校园网站建设汇报个人备案的网站
  • 网站信息化建设报送电商网站 设计
  • 写作网站哪个好用有没有必要给企业做网站
  • 长沙cms建站模板设计说明英文翻译
  • 做的差的网站河北网站制作公司地址