Skip to main content

Module multipart

Module multipart 

Source
Expand description

§Multipart Form Data Support

This module provides comprehensive support for parsing multipart/form-data requests, commonly used for file uploads and form submissions containing binary data.

§Features

  • Streaming Parser: Memory-efficient parsing of large multipart requests
  • Automatic File Handling: Large files are automatically written to temporary files
  • Configurable Limits: Protection against DoS attacks with customizable size limits
  • Type-Safe Extraction: Integration with Ignitia’s request extraction system
  • Async Support: Fully asynchronous parsing for non-blocking I/O

§Usage

§Basic Usage

use ignitia::{Multipart, Response, Result};

async fn upload_handler(mut multipart: Multipart) -> Result<Response> {
    while let Some(field) = multipart.next_field().await? {
        if field.is_file() {
            // Handle file upload
            let file_name = field.file_name().unwrap_or("unknown");
            let bytes = field.bytes().await?;
            println!("Uploaded file: {} ({} bytes)", file_name, bytes.len());
        } else {
            // Handle text field
            let text = field.text().await?;
            println!("Field {}: {}", field.name(), text);
        }
    }

    Ok(Response::text("Upload successful"))
}

§Configuration

use ignitia::multipart::{Multipart, MultipartConfig};

let config = MultipartConfig {
    max_request_size: 50 * 1024 * 1024, // 50MB
    max_field_size: 10 * 1024 * 1024,   // 10MB per field
    file_size_threshold: 1024 * 1024,   // 1MB before writing to disk
    max_fields: 50,                     // Maximum 50 fields
};

§Security Considerations

  • Size Limits: Always configure appropriate size limits for your use case
  • File Validation: Validate file types and contents before processing
  • Temporary Files: Temporary files are automatically cleaned up when dropped
  • Memory Usage: Large files are automatically streamed to disk to prevent memory exhaustion

Re-exports§

pub use error::MultipartError;
pub use error::MultipartRejection;
pub use field::Field;
pub use field::FileField;
pub use field::TextField;
pub use parser::Multipart;

Modules§

error
Multipart Error Types
field
Multipart Field Handling
parser
Multipart Form Data Parser

Structs§

Bytes
A cheaply cloneable and sliceable chunk of contiguous memory.
MultipartConfig
Configuration options for multipart form parsing.
NamedTempFile
A named temporary file.