Upload image
This commit is contained in:
parent
9d5dc91a22
commit
263e0aa8e7
17
Cargo.lock
generated
17
Cargo.lock
generated
@ -1185,6 +1185,7 @@ dependencies = [
|
|||||||
"tantivy",
|
"tantivy",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
"tracing-test",
|
"tracing-test",
|
||||||
@ -4908,9 +4909,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.40.0"
|
version = "1.41.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
|
checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -4920,9 +4921,21 @@ dependencies = [
|
|||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"socket2 0.5.7",
|
"socket2 0.5.7",
|
||||||
|
"tokio-macros",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-macros"
|
||||||
|
version = "2.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.82",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-retry"
|
name = "tokio-retry"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
|
@ -31,6 +31,7 @@ tempfile = "3.13.0"
|
|||||||
pulldown-cmark = "0.12.2"
|
pulldown-cmark = "0.12.2"
|
||||||
thiserror = "1.0.65"
|
thiserror = "1.0.65"
|
||||||
actix-multipart = "0.7.2"
|
actix-multipart = "0.7.2"
|
||||||
|
tokio = { version = "1.41.0", features = ["full"] }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ struct SignInForm {
|
|||||||
|
|
||||||
#[derive(Debug, MultipartForm)]
|
#[derive(Debug, MultipartForm)]
|
||||||
struct ImageUpload {
|
struct ImageUpload {
|
||||||
image: Option<TempFile>,
|
image: TempFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Template, Deserialize, Clone, PartialEq)]
|
#[derive(Debug, Template, Deserialize, Clone, PartialEq)]
|
||||||
@ -92,6 +92,18 @@ async fn render_sign_in() -> SignInForm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[post("/recipe-image")]
|
||||||
|
async fn recipe_image_upload(MultipartForm(form): MultipartForm<ImageUpload>) -> HttpResponse {
|
||||||
|
let _ = tokio::fs::create_dir_all("./assets/recipies/images").await;
|
||||||
|
let Ok((_file, path)) = form.image.file.keep() else {
|
||||||
|
return HttpResponse::InternalServerError().finish();
|
||||||
|
};
|
||||||
|
let uid = uuid::Uuid::new_v4();
|
||||||
|
tokio::fs::copy(path, format!("./assets/recipies/images/{}", uid)).await;
|
||||||
|
|
||||||
|
HttpResponse::Ok().body(format!("{{\"url\":\"/assets/recipies/images/{uid}\"}}"))
|
||||||
|
}
|
||||||
|
|
||||||
#[post("/sign-in")]
|
#[post("/sign-in")]
|
||||||
async fn sign_in(
|
async fn sign_in(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
|
Loading…
Reference in New Issue
Block a user