NestJS tích hợp Multer qua @nestjs/platform-express để xử lý multipart/form-data. Không cần install thêm gì với Express adapter.
Upload single file: dùng @UseInterceptors(FileInterceptor('fieldName', options)) và @UploadedFile() decorator. Options quan trọng: storage — diskStorage() lưu disk hoặc memoryStorage() lưu buffer (dùng khi upload S3), fileFilter để reject file không hợp lệ, limits.fileSize giới hạn kích thước.
Upload multiple files: FilesInterceptor('fieldName', maxCount) với @UploadedFiles(). ParseFilePipe với validators MaxFileSizeValidator và FileTypeValidator là cách clean nhất để validate. Upload S3: dùng memoryStorage() để lấy file.buffer, gọi AWS SDK s3.putObject() với buffer và file.mimetype. Luôn generate tên file ngẫu nhiên để tránh xung đột và directory traversal.