aim_server_multipart 0.0.1
aim_server_multipart: ^0.0.1 copied to clipboard
Multipart form data parsing for aim_server framework. Supports multipart/form-data format.
0.0.1 #
Initial release of aim_server_multipart - Multipart form data parser for the Aim framework.
Features #
- Multipart/Form-Data Parsing: RFC 7578 compliant parser for handling file uploads and form data
- File Upload Support:
- Single file uploads
- Multiple file uploads with same field name
- Mixed text fields and files in same request
- Security Features:
- Automatic filename sanitization to prevent path traversal attacks
- Random unique filename generation to prevent collisions
- Original filename preserved for reference
- Validation Options:
maxFileSize- Limit individual file sizemaxTotalSize- Limit total upload sizeallowedMimeTypes- Filter by MIME type with wildcard support (image/*)
- Efficient Processing:
- Stream-based processing for memory efficiency
- Real-time size validation during upload
- Optimized with
BytesBuilderfor large files
- Developer Experience:
- Type-safe API using Dart 3 Records
- Clean and intuitive API (
form.file(),form.field()) - Comprehensive error handling with
FormatExceptionandException - Well-documented with examples
API #
MultipartFormDataclass for accessing parsed datafield(String name)- Get single text fieldfields(String name)- Get multiple fieldsfile(String name)- Get single filefiles(String name)- Get multiple fileshas(String name)- Check field/file existence
UploadedFileclass representing uploaded filesfilename- Sanitized safe filenameoriginalFilename- Original client filenamecontentType- MIME typebytes- File contentsize- File sizesaveTo(String path)- Save to diskasString([Encoding])- Read as string
Requestextension withmultipart()method
Testing #
- 39 comprehensive tests covering:
- Filename sanitization and security
- File size validation (per-file and total)
- MIME type filtering with wildcards
- Multiple files and fields
- Error handling
- Edge cases (special characters, Unicode, etc.)
Supported #
- Dart SDK:
^3.10.0 - Dependencies:
aim_server: ^0.0.5mime: ^2.0.0
Security Considerations #
This package implements several security measures by default:
- Path traversal prevention (blocks
../, absolute paths) - Filename sanitization (removes dangerous characters)
- Unique filename generation (prevents overwrites)
- Size limits enforcement
- MIME type validation
What's Next #
Future versions may include:
- Streaming file saves for very large files
- Custom sanitization strategies
- Progress callbacks for upload tracking
- Character encoding detection and conversion