feat: 实现文件上传功能并完善测试覆盖
- 新增 upload.rs 模块,支持 multipart/form-data 文件上传 - 文件按日期存储在 storage/YYYY-MM-DD/ 目录下 - 使用 UUID 生成唯一文件名,保留原始扩展名 - 添加 axum-extra, uuid, chrono 依赖 新增测试用例: - config_test.rs: 6 个测试 (配置结构验证) - router_test.rs: 11 个测试 (路由匹配逻辑) - handler_test.rs: 8 个测试 (请求处理) - upload_test.rs: 13 个测试 (文件上传功能) 其他改进: - 优化 handler.rs 代码注释 - 更新 .gitignore 忽略 storage/ 和 .claude/ - 添加 CLAUDE.md 项目指南文档 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,13 +23,10 @@ pub async fn mock_handler(
|
||||
Query(params): Query<HashMap<String, String>>,
|
||||
req: Request<Body>,
|
||||
) -> impl IntoResponse {
|
||||
// let path = req.uri().path();
|
||||
// 1. 【关键】将需要的数据克隆出来,断开与 req 的借用关系
|
||||
let path = req.uri().path().to_string();
|
||||
let method_str = method.as_str().to_string();
|
||||
// 1. 将 Axum HeaderMap 转换为简单的 HashMap 供 Router 使用
|
||||
|
||||
// 2. 现在可以安全地消耗 req 了,因为上面没有指向 req 内部的引用了
|
||||
// 将 Axum HeaderMap 转换为简单的 HashMap 供 Router 使用
|
||||
let body_bytes = match axum::body::to_bytes(req.into_body(), 10 * 1024 * 1024).await {
|
||||
Ok(bytes) => bytes,
|
||||
Err(_) => {
|
||||
|
||||
Reference in New Issue
Block a user