开发日志
开发日志 006:补全图片资产与内容备份闭环
将图片上传、文章引用、媒体整理、受保护删除与内容备份串成可持续维护的内容资产链路。
从“插入图片”到管理内容资产
前几轮开发已经让文章、项目和站点配置回归 Markdown 文件,但图片仍是内容工作流中相对独立的一环:上传后如何复用,移动或改名后文章链接是否失效,部署前又该怎样一起备份,都会直接影响长期维护体验。
本阶段围绕这一问题补齐媒体资产链路。后台新增图床管理工作区,支持批量选择与拖拽上传、分组、搜索、预览和刷新;上传后的图片可以直接复制稳定访问地址,或复制可粘贴到文章正文的 Markdown 语法。文章详情页同步支持渲染 ,使图片从上传到前台展示不再需要手工转换路径。
媒体整理不再以牺牲文章为代价
图片进入内容库后,重命名和重新分组是不可避免的操作。为避免文件路径变化后留下大量失效引用,媒体管理接口在移动或改名图片时,会扫描文章 Markdown 中的精确引用并同步替换为新地址;若引用更新过程发生异常,已移动的文件会回滚到原位置。
删除操作则优先检查引用关系。仍被文章使用的图片不会被直接删除,后台会返回引用它的文章信息,要求先处理正文内容。这让“整理图床”不再是一项高风险操作,而是有依赖检查与回退边界的维护动作。
媒体存储支持通过 MEDIA_DIR 与源码目录分离,并保持旧图片路径的兼容。服务端会规范化目录和文件名、处理重名文件,同时限制图片格式与单文件、单批次大小;媒体访问路由也会校验解析后的真实路径,阻止路径穿越和符号链接逃逸。
把 Markdown 和图片一起交还给使用者
备份不能只保存文章正文,否则恢复后仍会面对缺图页面。因此后台新增一键下载内容 ZIP:归档只收集内容目录中的 Markdown,以及媒体目录中受支持的图片,并附带文件清单与恢复说明。
备份过程采用白名单和流式打包,明确排除源码、依赖、环境变量、后台会话、隐藏的内部目录和旧备份文件。这样生成的压缩包只包含真正需要迁移或留存的内容资产,也不会因为把部署环境整体打包而泄露配置。
编辑与部署流程的同步修整
这一轮还压缩了文章编辑器布局,完善了 Markdown 批量导入。不同文件会独立解析和校验:合法文章可以正常进入待保存列表,格式错误会按文件反馈,重复 slug 则自动生成不冲突的新标识而不覆盖原文。编辑器中的未保存内容在切换文章、导入或保存前都会同步回草稿状态。
针对线上反向代理场景,图片上传同时补充了对可信转发信息的适配,使 HTTPS 代理后的同源校验与上传请求能够正确工作。至此,博客的内容管理已从“维护 Markdown 文件”扩展为覆盖文字、图片、引用关系与备份恢复的完整日常工作流。
阶段结果与后续
当前的媒体能力已具备上传、展示、复用、改名移动、引用保护、内容备份和部署隔离等基础环节。后续将继续在真实内容积累中验证大批量素材的组织方式,并定期演练 CONTENT_DIR 与 MEDIA_DIR 的独立备份和恢复。