diff --git a/Rocket.toml b/Rocket.toml index 1759e3e..be66c1e 100644 --- a/Rocket.toml +++ b/Rocket.toml @@ -1,2 +1,2 @@ [default] -limits = { file = "200MB", files = "200MB" } +limits = { file = "200MB" } diff --git a/src/api/upload.rs b/src/api/upload.rs index a943f8a..0b3bc0a 100644 --- a/src/api/upload.rs +++ b/src/api/upload.rs @@ -1,25 +1,22 @@ use crate::api::{CurrentUser, JsonAPI}; -use rocket::form::Form; +use chrono::offset::Local; use rocket::fs::TempFile; use rocket::serde::json::json; use std::fs; use std::path::Path; use std::process::Command; -#[derive(FromForm)] -pub struct Upload<'f> { - file: TempFile<'f>, -} - -#[post("/upload", data = "
")] -pub async fn ipfs_upload(user: CurrentUser, mut form: Form>) -> JsonAPI { +#[post("/upload", data = "")] +pub async fn ipfs_upload(user: CurrentUser, mut file: TempFile<'_>) -> JsonAPI { let file_dir = Path::new("user_files").join(&user.namehash); fs::create_dir_all(&file_dir)?; - let file = &mut form.file; // dbg!(&file); - let filename = file.name().unwrap_or("file").to_string() - + "." - + &file.content_type().map_or("", |ct| ct.sub().as_str()); + let filename = format!( + "{}-{}.{}", + Local::now().timestamp(), + &file.content_type().map_or("unknow", |ct| ct.top().as_str()), + &file.content_type().map_or("file", |ct| ct.sub().as_str()) + ); debug!("dir: {}", &file_dir.to_str().unwrap()); file.persist_to(file_dir.join(&filename)).await?; // dbg!(&file_dir);