# node-formidable/formidable

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/node-formidable-formidable).**

7,178 stars · 684 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/node-formidable/formidable
- awesome-repositories: https://awesome-repositories.com/repository/node-formidable-formidable.md

## Topics

`aws-lambda` `aws-s3` `azure` `azure-storage` `file-upload` `form` `formdata` `formidable` `incomingform` `multipart` `multipart-formdata` `multipart-parser` `querystring-parser` `serverless`

## Description

Formidable is a streaming multipart form parser and file upload handler for Node.js. It provides the utility to process incoming HTTP requests containing a mix of text fields and files, converting them into structured data.

The project is designed as a multipart data streamer that can pipe incoming uploads directly to the local filesystem or cloud storage providers. It includes a cloud storage upload bridge to route streams to services such as AWS S3, Azure, or GCP without requiring intermediate local disk storage.

The tool incorporates server-side file validation and security controls, including filename sanitization to prevent directory traversal attacks and resource guarding to enforce maximum file sizes and counts. It further supports real-time upload progress tracking and custom data filtering.

## Tags

### Web Development

- [Multipart Form Parsing](https://awesome-repositories.com/f/web-development/multipart-upload-utilities/multipart-form-parsing.md) — Provides a streaming parser for extracting files and text fields from multipart/form-data requests. ([source](https://github.com/node-formidable/formidable#readme))
- [File Upload Handlers](https://awesome-repositories.com/f/web-development/file-upload-handlers.md) — Provides a server-side utility for managing file size limits, filename sanitization, and upload progress tracking.
- [Streamed Parsing](https://awesome-repositories.com/f/web-development/multipart-upload-utilities/multipart-form-parsing/streamed-parsing.md) — Processes incoming request bodies as a continuous stream to handle large uploads without memory exhaustion.
- [URL Data Parsing](https://awesome-repositories.com/f/web-development/url-data-parsing.md) — Converts standard URL-encoded query strings from non-multipart form submissions into structured data objects. ([source](https://github.com/node-formidable/formidable/tree/master/examples))
- [Cloud Storage Upload Bridges](https://awesome-repositories.com/f/web-development/cloud-storage-upload-bridges.md) — Provides a bridge to pipe multipart request streams directly to AWS S3, Azure, or GCP buckets.
- [Custom File Storage Logic](https://awesome-repositories.com/f/web-development/custom-file-storage-logic.md) — Defines how uploaded files are named, where they are stored, and how they are written to disk. ([source](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md))
- [Real-time Stream Uploads](https://awesome-repositories.com/f/web-development/direct-to-cloud-uploads/real-time-stream-uploads.md) — Redirects uploaded file data to a writable stream for direct, real-time cloud or private storage uploads. ([source](https://github.com/node-formidable/formidable#readme))
- [Incoming File Filters](https://awesome-repositories.com/f/web-development/file-uploads/incoming-file-filters.md) — Intercepts and filters specific fields or files from a multipart stream based on custom business logic.
- [Upload File Filtering](https://awesome-repositories.com/f/web-development/file-uploads/upload-file-filtering.md) — Evaluates incoming files against custom predicate functions to selectively accept or reject specific uploads. ([source](https://github.com/node-formidable/formidable#readme))
- [Incoming Request Field Filters](https://awesome-repositories.com/f/web-development/incoming-request-field-filters.md) — Provides custom logic to filter specific fields or files during the multipart parsing process. ([source](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md))
- [Stream Interception](https://awesome-repositories.com/f/web-development/multipart-upload-utilities/multipart-form-parsing/stream-interception.md) — Allows overriding default part handlers to manually process and validate specific segments of a multipart stream. ([source](https://github.com/node-formidable/formidable/blob/master/README.md))

### Data & Databases

- [Cloud File Uploaders](https://awesome-repositories.com/f/data-databases/cloud-file-uploaders.md) — Provides utilities for streaming uploaded files directly to remote cloud storage like AWS S3, Azure, or GCP.
- [Cloud Storage Integrations](https://awesome-repositories.com/f/data-databases/cloud-storage-integrations.md) — Streams incoming file data directly to remote cloud platforms to avoid local disk storage. ([source](https://github.com/node-formidable/formidable/tree/master/examples))

### Security & Cryptography

- [Filename Sanitizers](https://awesome-repositories.com/f/security-cryptography/file-upload-security/attachment-security-validators/filename-sanitizers.md) — Sanitizes incoming file metadata and restricts write paths to prevent directory traversal attacks.

### System Administration & Monitoring

- [Resource Constraints](https://awesome-repositories.com/f/system-administration-monitoring/resource-constraints.md) — Enforces maximum file counts and size limits during streaming to prevent server resource exhaustion.

### User Interface & Experience

- [Server-Side Upload Constraints](https://awesome-repositories.com/f/user-interface-experience/file-uploaders/asynchronous-uploaders/server-side-upload-constraints.md) — Enforces server-side limits on upload sizes and file counts to protect against resource abuse.
- [Server-Side Volume Restrictions](https://awesome-repositories.com/f/user-interface-experience/file-uploaders/asynchronous-uploaders/upload-constraints/server-side-volume-restrictions.md) — Enforces maximum file counts and size limits during the stream process to prevent server memory or disk exhaustion. ([source](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md))

### Networking & Communication

- [Upload Progress Tracking](https://awesome-repositories.com/f/networking-communication/upload-progress-tracking.md) — Emits events after each parsed chunk to monitor upload bytes and completion status in real-time.

### Software Engineering & Architecture

- [Writable Stream Integration](https://awesome-repositories.com/f/software-engineering-architecture/writable-stream-integration.md) — Redirects file data to custom writable streams for direct uploads to cloud providers or disks.
