Skip to content

Commit b043f8c

Browse files
committed
feat(api/image): 添加图片上传、列表、删除和展示功能
在 `Cargo.toml` 中添加了 `image` 依赖,并启用了特定格式的支持(jpeg, png, gif, webp)。 在 `api/src/images.rs` 中新增了图片上传、列表、删除和展示功能的路由处理函数。实现了图片上传的处理逻辑,包括文件格式验证、大小检查、SHA256哈希计算、去重检查、图片解码、压缩为WebP格式、生成缩略图、存储到对象存储以及数据库记录插入的功能。同时,实现了图片列表展示、单个图片删除以及图片和缩略图的公开访问功能。 在 `api/src/lib.rs` 中增加了图片功能的私有和公开路由合并。 在 `api/src/state.rs` 中为 `DatabaseConnection` 提供了 `FromRef<AppState>` 实现,以便在 Axum 提取器中直接使用数据库连接。 在 `auth/Cargo.toml` 中添加了 `sea-orm`, `sha2` 和 `hex` 作为依赖项。 在 `auth/src/middleware.rs` 中更新了 `AuthUser` 的提取逻辑,增加了对 `X-API-Token` 头的处理,并实现了 API token 的验证逻辑,包括 token 解析、数据库查询、token 哈希匹配、过期检查以及最后使用时间更新。 在 `common/src/config.rs` 中添加了 `ImageConfig` 结构体及相关默认值实现,用于配置图片上传大小限制、压缩质量、CDN 基础 URL 和允许的引用者。 在 `core/Cargo.toml` 中添加了 `image` 作为依赖项。 在 `core/src/entity/images.rs` 中新增了 `images` 实体定义,包括字段、关系以及行为实现。 在 `core/src/entity/mod.rs` 中添加了 `images` 模块。 在 `core/src/image.rs` 中实现了 `ImageService` 结构体,包括图片上传、列表展示、删除以及通过哈希获取图片的功能。 在 `core/src/lib.rs` 中增加了 `image` 模块。 在 `storage/src/operator.rs` 中为 `storage_key` 添加了 `image_thumb` 函数,用于生成图片缩略图的存储键。 在 `migration/src/lib.rs` 中新增了图片表的迁移脚本。 在 `migration/src/m20250307_000007_create_images_table.rs` 中实现了图片表的创建和删除迁移逻辑。
1 parent b7a32a4 commit b043f8c

File tree

16 files changed

+856
-11
lines changed

16 files changed

+856
-11
lines changed

Cargo.lock

Lines changed: 166 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ headers = "0.4"
4242
http-body-util = "0.1"
4343
bytes = "1"
4444

45+
# Image processing
46+
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
47+
4548
# Utils
4649
chrono = { version = "0.4", features = ["serde"] }
4750
uuid = { version = "1", features = ["v4", "serde"] }

0 commit comments

Comments
 (0)