Skip to main content

process_image_upload

Function process_image_upload 

Source
pub(crate) async fn process_image_upload(
    data: Bytes,
    original_filename: Option<String>,
) -> Result<UploadOutcome, UploadError>
Expand description

单一图片入库流水线(web 上传 / MCP bearer 端点 / MCP URL 抓取共用)。

输入:原始字节 + 可选展示文件名。不信任客户端声明的 MIME——以 magic bytes 为唯一真相。输出可直接嵌入 Markdown 的 /uploads/... URL。

步骤:大小校验 → magic bytes 检 MIME → 尺寸/像素校验 → SHA-256 去重(命中 即复用,跳过最贵的转码)→ GIF/WebP 解码校验 → spawn_blocking 转码 → 按日期落盘 → assets 登记(含并发竞态补偿,落败者删自己的文件复用胜出者)。