busboy-body-parser
Version:
Body parsing for multipart/form-data forms in Express.
92 lines (67 loc) • 2.19 kB
Markdown
Body parsing for multipart/form-data forms in Express.
It will add regular fields to req.body as per [body-parser](https://www.npmjs.org/package/body-parser) but will also add uploaded files to `req.files`.
`npm install busboy-body-parser`
```javascript
const busboyBodyParser = require('busboy-body-parser');
app.use(busboyBodyParser());
```
This is defined similarly to the `limit` option in [body-parser](https://www.npmjs.org/package/body-parser) but is applied to individual files rather than the total body size.
```javascript
const busboyBodyParser = require('busboy-body-parser');
app.use(busboyBodyParser({ limit: '5mb' }));
```
This limit can be defined as either a number of bytes, or any string supported by [bytes](https://www.npmjs.org/package/bytes) - eg. `'5mb'`, `'500kb'`.
The upload of multiple files with the same key is not enabled by default. If you wish to support this you will need to set the `multi` option to true.
```javascript
const busboyBodyParser = require('busboy-body-parser');
app.use(busboyBodyParser({ multi: true }));
```
_Important note_: if `multi` is set to true, then all `req.files[key]` will *always* be an array, irrespective of the nuber of files associated with that key.
The middleware will add files to `req.files` in the following form:
```
// req.files:
{
fieldName: {
data: Buffer("raw file data"),
name: "upload.txt",
encoding: "utf8",
mimetype: "text/plain",
truncated: false
}
}
```
If a file has exceeded the file-size limit defined above it will have `data: null` and `truncated: true`:
```
// req.files:
{
fieldName: {
data: null,
name: "largefile.txt",
encoding: "utf8",
mimetype: "text/plain",
truncated: true
}
}
```
If the `multi` property is set:
```
// req.files:
{
fieldName: [{
data: Buffer("raw file data"),
name: "upload.txt",
encoding: "utf8",
mimetype: "text/plain",
truncated: false
}]
}
```
`npm test`