feat: use xpier media library for uploads and markdown embeds

Store media:ID in post bodies instead of CDN URLs, and keep sablog attach tokens as a fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
gouki
2026-09-16 19:03:52 +00:00
co-authored by Cursor
parent f6a9a8ea50
commit f81397a289
38 changed files with 5390 additions and 2059 deletions
+15 -14
View File
@@ -4,12 +4,12 @@
## 环境要求
| 组件 | 要求 |
|------|------|
| PHP | **8.2+**(需 pcntl 扩展用于 Workerman;GD/Imagick 用于缩略图) |
| MySQL | **8.x** |
| Composer | 2.x |
| 可选 | Node.js(前台资源构建)、S3 兼容存储(R2/COS/OSS/MinIO)、OpenAI 兼容 LLM |
| 组件 | 要求 |
| -------- | ------------------------------------------------------------------------- |
| PHP | **8.2+**(需 pcntl 扩展用于 Workerman;GD/Imagick 用于缩略图) |
| MySQL | **8.x** |
| Composer | 2.x |
| 可选 | Node.js(前台资源构建)、S3 兼容存储(R2/COS/OSS/MinIO)、OpenAI 兼容 LLM |
## 1. 获取代码与依赖
@@ -33,6 +33,7 @@ DB_PASSWORD=
# 以下为可选能力(不配也能跑,见注释):
# S3_* 附件存储(不配置回退本地 public)
# MEDIA_DISK=public 新媒体库磁盘(正文写 media:ID,见 docs/media.md)
# LLM_* AI 评论审核/润色
# MARKET_* 插件/主题远程市场
```
@@ -84,11 +85,11 @@ php artisan queue:work --queue=default,ai
## 5. 常见问题
| 现象 | 处理 |
|------|------|
| 页面 500 / 空白 | `storage/`、`bootstrap/cache/` 目录需可写;`php artisan config:clear` |
| 中文乱码 | 数据库/连接字符集 utf8mb4 |
| 后台样式错乱 | `php artisan filament:assets`(重新发布后台资源) |
| 文章编辑框太小 | 已内置加大样式;仍不够可调整 `app/Providers/AppServiceProvider.php` 中 `.fi-fo-markdown-editor` 的 min-height |
| 附件上传失败 | 未配 S3 时走本地 public 磁盘;配 S3 后确认 `S3_*` 键与桶权限 |
| 插件停用后功能消失 | 属预期:付费列/外链中转等由插件注入,后台「插件管理」重新启用即可 |
| 现象 | 处理 |
| ------------------ | ------------------------------------------------------------------------------------------------------------- |
| 页面 500 / 空白 | `storage/`、`bootstrap/cache/` 目录需可写;`php artisan config:clear` |
| 中文乱码 | 数据库/连接字符集 utf8mb4 |
| 后台样式错乱 | `php artisan filament:assets`(重新发布后台资源) |
| 文章编辑框太小 | 已内置加大样式;仍不够可调整 `app/Providers/AppServiceProvider.php` 中 `.fi-fo-markdown-editor` 的 min-height |
| 附件上传失败 | 未配 S3 时走本地 public 磁盘;配 S3 后确认 `S3_*` 键与桶权限 |
| 插件停用后功能消失 | 属预期:付费列/外链中转等由插件注入,后台「插件管理」重新启用即可 |