From 2898935932f7268df0aa6618aa6190b60f5cf444 Mon Sep 17 00:00:00 2001 From: Warren Date: Sun, 17 May 2026 01:36:03 +0800 Subject: [PATCH] fix: Create user directory before file upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Additional fix: - tokio::fs::File::create() fails if directory doesn't exist - Need to create user_dir before creating file - Added tokio::fs::create_dir_all(&user_dir).await Change: - Line 740-750: Added directory creation before file creation - Error handling: return 500 if create_dir fails Flow: 1. user_dir = format!({}/{}, base_dir, user_id) 2. create_dir_all(user_dir) ← NEW 3. File::create(file_path) Test result: ✅ momentry upload → file saved to momentry directory ✅ Directory auto-created if not exists Files: - src/server.rs (added create_dir_all) --- src/server.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/server.rs b/src/server.rs index f7b30a3..d26d070 100644 --- a/src/server.rs +++ b/src/server.rs @@ -739,6 +739,15 @@ async fn upload_file( filename = field.file_name().unwrap_or("upload.bin").to_string(); let file_path = format!("{}/{}", user_dir, filename); + // Create user directory if not exists + if let Err(e) = tokio::fs::create_dir_all(&user_dir).await { + return ( + StatusCode::INTERNAL_SERVER_ERROR, + Json(serde_json::json!({"error": format!("create_dir error: {}", e)})), + ) + .into_response(); + } + let mut hasher = Sha256::new(); let mut total_written: u64 = 0;