# `actix-multipart` <!-- prettier-ignore-start --> [](https://crates.io/crates/actix-multipart) [](https://docs.rs/actix-multipart/0.6.2)   <br /> [](https://deps.rs/crate/actix-multipart/0.6.2) [](https://crates.io/crates/actix-multipart) [](https://discord.gg/NWpN5mmg3x) <!-- prettier-ignore-end --> <!-- cargo-rdme start --> Multipart form support for Actix Web. ## Examples [More available in the examples repo →](https://github.com/actix/examples/tree/master/forms/multipart) ```rust use actix_web::{post, App, HttpServer, Responder}; use actix_multipart::form::{json::Json as MPJson, tempfile::TempFile, MultipartForm}; use serde::Deserialize; #[derive(Debug, Deserialize)] struct Metadata { name: String, } #[derive(Debug, MultipartForm)] struct UploadForm { #[multipart(limit = "100MB")] file: TempFile, json: MPJson<Metadata>, } #[post("/videos")] pub async fn post_video(MultipartForm(form): MultipartForm<UploadForm>) -> impl Responder { format!( "Uploaded file {}, with size: {}", form.json.name, form.file.size ) } #[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(move || App::new().service(post_video)) .bind(("127.0.0.1", 8080))? .run() .await } ``` <!-- cargo-rdme end --> Curl request : ```bash curl -v --request POST \ --url http://localhost:8080/videos \ -F 'json={"name": "Cargo.lock"};type=application/json' \ -F file=@./Cargo.lock ```