PicList 图片上传
将 Markdown 文件中的本地图片上传到配置的图床,并将本地路径替换为云端链接。
前置条件
- 已安装 PicList 并启用 HTTP Server
- 已在 PicList 中配置图床
首次配置: 请参阅 references/setup.md 安装和配置指南。
工作流程
1. 确定处理范围
- 单个文件:
file.md - 多个文件:
file1.md file2.md - 目录: 扫描目录中所有
.md文件 - 多个目录: 递归处理每个目录
2. 提取和过滤图片路径
解析  模式:
- 提取相对路径和绝对路径
- 跳过已有 URL: 忽略
http://和https://链接 - 保留 alt 文本描述
3. 上传和替换
- 将相对路径解析为绝对路径
- 验证文件是否存在
- 通过 PicList HTTP Server 上传
- 将本地路径替换为云端 URL
- 删除本地图片文件(除非使用
--keep-local) - 直接修改原文件
使用方法
处理目录(默认删除本地图片)
scripts/process.sh --in-place docs/
直接修改 docs/ 中的所有 Markdown 文件,上传成功后删除本地图片。
处理指定文件(保留本地图片)
scripts/process.sh --in-place --keep-local README.md docs/guide.md
直接修改指定的文件,但保留本地图片不删除。
预览模式(不修改文件)
scripts/process.sh --dry-run README.md
查看将要进行的替换,不实际修改文件。
命令选项
| 选项 | 说明 |
|---|---|
--in-place | 直接修改原文件 |
--keep-local | 保留本地图片文件(默认删除) |
--dry-run | 预览模式,不修改文件 |
响应格式
解析上传返回的 JSON:
{"success":true,"result":["https://example.com/image.png"]}
统计报告
处理完成后显示:
📊 Summary:
Total uploaded: 5
Total skipped: 3
Total failed: 0
- Uploaded: 成功上传并替换(已删除本地图片)
- Skipped: 已是云端 URL(无需操作)
- Failed: 上传错误(保留原始路径)
错误处理
- PicList Server 未运行: 提示启动 PicList 应用
- 文件不存在: 跳过并显示 ⚠️ 警告,继续处理
- 上传失败: 保留原始路径,标记 ❌,继续
- 无效 JSON: 视为上传失败
配置
PicList Server 默认地址为 http://127.0.0.1:36677/upload。可通过环境变量覆盖:
export PICLIST_SERVER=http://127.0.0.1:PORT
支持格式
png, jpg, jpeg, gif, webp, svg, bmp