@UploadedFile and @UploadedFiles decorators, integrating seamlessly with popular file upload libraries.
Installation
Install the required dependencies based on your framework:- Express
- Koa
- Hapi
Basic File Upload
Single File
Accept a single file upload:Multiple Files
Accept multiple files in a single upload:Optional File Uploads
Make file uploads optional:Mixed Form Data
Combine file uploads with other form fields:Multiple File Fields
Handle different file fields in the same request:Custom Multer Configuration
Express
Customize multer behavior in your Express app:src/app.ts
Koa
Customize multer for Koa:src/app.ts
File Validation
Validate uploaded files in your controller:Memory Storage
Store files in memory instead of disk:src/app.ts
Cloud Storage Integration
AWS S3
Google Cloud Storage
File Type Detection
Use file-type library for accurate MIME type detection:Image Processing
Process uploaded images with Sharp:Error Handling
Handle file upload errors gracefully:Configuration Reference
tsoa.json
Configure file upload settings:tsoa.json
Multer Options
| Option | Type | Description |
|---|---|---|
dest | string | Destination folder for uploaded files |
storage | StorageEngine | Storage engine (disk or memory) |
limits.fileSize | number | Max file size in bytes |
limits.files | number | Max number of files |
fileFilter | function | Function to control which files are accepted |
Best Practices
Validate File Types
Validate File Types
Always validate file types both client-side and server-side. Don’t rely solely on MIME types - use magic number detection.
Set Size Limits
Set Size Limits
Always set reasonable file size limits to prevent abuse and protect your server resources.
Use Unique Filenames
Use Unique Filenames
Generate unique filenames (UUIDs, timestamps) to prevent conflicts and potential security issues.
Scan for Malware
Scan for Malware
For user-uploaded files, integrate virus scanning before saving or processing files.
Store Outside Web Root
Store Outside Web Root
Store uploaded files outside your web root and serve them through controlled endpoints.
Next Steps
Validation
Learn about request validation
Authentication
Secure your file upload endpoints