diff --git a/src/main.rs b/src/main.rs index f5050c2..33e675f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use actix_multipart::{ form::{ tempfile::{TempFile, TempFileConfig}, + text::Text, MultipartForm, }, Multipart, @@ -10,12 +11,14 @@ use actix_web::{middleware, post, web, App, Error, HttpResponse, HttpServer, Res use futures_util::StreamExt as _; use std::{env, io}; -// #[derive(Debug, MultipartForm)] -// struct HealthForm { -// firstname: String, -// lastname: String, -// birthdate: String, -// } +#[derive(Debug, MultipartForm)] +struct HealthForm { + #[multipart(rename = "file")] + files: Vec, + firstname: Text, + lastname: Text, + birthdate: Text, +} #[actix_web::main] async fn main() -> io::Result<()> { @@ -35,37 +38,44 @@ async fn main() -> io::Result<()> { .await } -#[post("/health-form")] -async fn form(mut form: Multipart) -> Result { - // println!("{form:?}"); - while let Some(item) = form.next().await { - let mut field = item?; - // let mut value = ""; - let name = field.name(); - let content_type = field.content_type().unwrap().to_string(); - if content_type == "application/octet-stream" { - // Handle file field - // You can save the file or process its contents here - while let Some(chunk) = field.try_next().await? { - // Process file chunk - } - } else { - // Handle other field types (e.g., text fields) - let field_value = field - .try_next() - .await? - .expect("Field value not found") - .to_utf8() - .expect("Failed to decode field value as UTF-8"); +// #[post("/health-form")] +// async fn form(mut form: Multipart) -> Result { +// // println!("{form:?}"); +// while let Some(item) = form.next().await { +// let mut field = item?; +// // let mut value = ""; +// let name = field.name(); +// let content_type = field.content_type().unwrap().to_string(); +// if content_type == "application/octet-stream" { +// // Handle file field +// // You can save the file or process its contents here +// while let Some(chunk) = field.next().await { +// // Process file chunk +// println!("chunk: {:?}", std::str::from_utf8(&chunk?)); +// } +// } else { +// // Handle other field types (e.g., text fields) +// let field_value = field +// .next() +// .await +// .expect("Field value not found") +// .expect("Field value not found"); - // Process the field value (e.g., store in a database, perform validation, etc.) - println!("Field {}: {}", name, field_value); - } - // while let Some(chunk) = field.try_next().await { - // let value = std::str::from_utf8(&chunk?).unwrap(); - // println!("{:?}: {:?}", name, value); - // } - } +// // Process the field value (e.g., store in a database, perform validation, etc.) +// println!("Field {:?}: {:?}", name, field_value); +// } +// // while let Some(chunk) = field.try_next().await { +// // let value = std::str::from_utf8(&chunk?).unwrap(); +// // println!("{:?}: {:?}", name, value); +// // } +// } +// Ok(HttpResponse::Ok().into()) +// } + +#[post("/health-form")] +async fn form(form: MultipartForm) -> Result { + println!("{:?}", form.firstname); + println!("{:?}", form.lastname); Ok(HttpResponse::Ok().into()) }