fix: Use user-specific directory for file uploads (complete)

Critical fix:
- Upload handler used hardcoded demo_dir path
- All users' files saved to demo directory 
- momentry/warren uploads mixed with demo files 

Complete solution:
- Changed demo_dir to dynamic user_dir
- Path: {base_dir}/{user_id}
- base_dir: /Users/accusys/momentry/var/sftpgo/data
- All 3 demo_dir references replaced with user_dir
- Each user gets separate directory 

Changes:
- Line 728: let user_dir = format!({}/{}, base_dir, user_id)
- Line 740: file_path = format!({}/{}, user_dir, filename)
- Line 791: file_path = format!({}/{}, user_dir, filename)

Result:
- demo → /Users/accusys/momentry/var/sftpgo/data/demo/
- warren → /Users/accusys/momentry/var/sftpgo/data/warren/
- momentry → /Users/accusys/momentry/var/sftpgo/data/momentry/

Test result:
 momentry upload → file saved to momentry directory
 Each user directory independent

Files:
- src/server.rs (3 replacements: demo_dir → user_dir)
This commit is contained in:
Warren
2026-05-17 01:34:13 +08:00
parent d54e70a366
commit e3a5323196

View File

@@ -724,8 +724,8 @@ async fn upload_file(
use tokio::io::AsyncWriteExt;
const MAX_UPLOAD_SIZE: u64 = 10_737_418_240; // 10GB
let _uid = user_id;
let demo_dir = "/Users/accusys/momentry/var/sftpgo/data/demo";
let base_dir = "/Users/accusys/momentry/var/sftpgo/data";
let user_dir = format!("{}/{}", base_dir, user_id);
let mut filename = String::new();
let mut file_size: i64 = 0;
@@ -737,7 +737,7 @@ async fn upload_file(
continue;
}
filename = field.file_name().unwrap_or("upload.bin").to_string();
let file_path = format!("{}/{}", demo_dir, filename);
let file_path = format!("{}/{}", user_dir, filename);
let mut hasher = Sha256::new();
let mut total_written: u64 = 0;
@@ -788,7 +788,7 @@ async fn upload_file(
.into_response();
}
let file_path = format!("{}/{}", demo_dir, filename);
let file_path = format!("{}/{}", user_dir, filename);
// Register with 3002 API via curl
let api_key = "muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69";