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§
Structs§
- Bytes
- A cheaply cloneable and sliceable chunk of contiguous memory.
- Multipart
Config - Configuration options for multipart form parsing.
- Named
Temp File - A named temporary file.