# express-busboy

> Busboy for express, mimics the old bodyParser

Latest version **10.1.0** (published 2023-05-23) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install express-busboy
pnpm add express-busboy
yarn add express-busboy
bun add express-busboy
```

## Health

**Score 23/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 10.1.0 |
| Published | 2023-05-23 |
| First published | 2014-08-28 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | separate (@types/express-busboy) |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 29.6 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 47 |
| Author | Dav Glass |
| Maintainers | davglass, mridgway, redonkulus |
| Keywords | busboy, express, body-parser |

## Links

- npm: https://www.npmjs.com/package/express-busboy
- Repository: https://github.com/yahoo/express-busboy
- Issues: https://github.com/yahoo/express-busboy/issues
- npm.io page: https://npm.io/package/express-busboy

## Dependencies (5)

- [qs](https://npm.io/package/qs.md) ^6.10.3
- [body](https://npm.io/package/body.md) ^5.1.0
- [uuid](https://npm.io/package/uuid.md) ^8.3.2
- [mkdirp](https://npm.io/package/mkdirp.md) ^1.0.4
- [connect-busboy](https://npm.io/package/connect-busboy.md) ^1.0.0

## Recent versions

- 10.1.0 (latest) — 2023-05-23
- 10.0.0 — 2023-05-09
- 9.0.0 — 2022-05-23
- 8.0.2 — 2022-03-30
- 8.0.1 — 2022-03-21
- 8.0.0 — 2020-02-24
- 7.0.1 — 2018-12-01
- 7.0.0 — 2018-05-03
- 6.0.1 — 2017-03-27
- 6.0.0 — 2017-03-27
- 5.0.0 — 2016-12-22
- 4.0.0 — 2016-07-27
- 3.0.0 — 2016-06-29
- 2.5.0 — 2016-04-27
- 2.4.5 — 2015-10-13
- … 13 more at https://npm.io/package/express-busboy/versions

## README

# express-busboy [![npm version](https://badge.fury.io/js/express-busboy.svg)](http://badge.fury.io/js/express-busboy) ![Build Status](https://github.com/yahoo/express-busboy/actions/workflows/test.yml/badge.svg)

A simple `body-parser` like module for express that
uses [`connect-busboy`](https://github.com/mscdex/connect-busboy) under the hood.

It's designed to be more of a "drop in" replacement for `body-parser`.
With it populating `req.body`, there is very minimal code change needed to use it.

usage
-----

```js
import bb from 'express-busboy';
const app = express();

bb.extend(app);
```

The module will populate `req.body` and `req.files` like the `body-parser` module does.

configuration
-------------

```js
bb.extend(app, {
    //options can go here
});
```

By default this module will create an `Array` when it finds multiple fields with the
same name in the POST parameters. You can set `restrictMultiple` to `true` to
not parse mutiple POST values into `Array`'s

file uploads
------------

By default file uploads are disabled, the `req.files` object will always be empty. You can activate them with:

```js
bb.extend(app, {
    upload: true,
    path: '/path/to/save/files',
    allowedPath: /./
});
```

`path` will default to: `os.tmpdir()/express-busboy/<uuid>/<the field name>/<filename>`.

`allowedPath` can contain a regular expression limiting the upload function to given urls. For example `/^\/upload$/` would only allow uploads in the /upload path.

You can have a function returning true/false if you prefer that:

```js
options.allowedPath = function(url) {
    return url == '/upload';
}
```

You can restrict uploads to specific mimetypes as well:

```js
options.mimeTypeLimit = [
    'text/x-markdown',
    'application/javascript',
    'image/jpeg',
    'image/png'
];
```

Name and filename inputs will be sanitized into an MD5 hash before determining path for the file on disk.  If you want to change this behavior you can provide a strip function of your own:

```js
// this will not sanitize the inputs
options.strip = function(value, type) {
    return value;
}
```

When files are not uploaded due to path or mimetype checks, no error is returned (so the other data in the request can be handled) the restricted item will simply not appear in the `req.files` `Object`.

---
_Source: https://npm.io/package/express-busboy · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
