Commit b043f8c
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- crates
- api/src
- auth
- src
- common/src
- core
- src
- entity
- storage/src
- migration/src
16 files changed
+856
-11
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
45 | 48 | | |
46 | 49 | | |
47 | 50 | | |
| |||
0 commit comments