Simple express file upload middleware that wraps around busboy


Simple express middleware for uploading files.

npm Build Status downloads per month Coverage Status

Version 0.1.0 Breaking Changes!

» No more urlencoded support

As of v0.1.0, there is NO MORE application/x-www-form-urlencoded SUPPORT! Moving forward, express-fileupload is considered a “multipart” solution only.

If you want to parse urlencoded requests, use body-parser.

&raquo; No more support for < Node.js v4

No more support for versions of Node older than v4. Use with lower versions of Node at your own risk!


# With NPM
npm install --save express-fileupload

# With Yarn
yarn add express-fileupload


When you upload a file, the file will be accessible from req.files.

Example Scenario

  • You’re uploading a file called car.jpg
  • Your input’s name field is foo: <input name="foo" type="file" />
  • In your express server request, you can access your uploaded file from javascript'/upload', function(req, res) { console.log(; // the uploaded file object }); The object will contain the following:
  • “car.jpg”
  • A function to move the file elsewhere on your server
  • req.files.mimetype: The mimetype of your file
  • A buffer representation of your file

Full Example

Your node.js code:

const express = require('express');
const fileUpload = require('express-fileupload');
const app = express();

// default options
app.use(fileUpload());'/upload', function(req, res) {
  if (!req.files)
    return res.status(400).send('No files were uploaded.');

  // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
  let sampleFile = req.files.sampleFile;

  // Use the mv() method to place the file somewhere on your server'/somewhere/on/your/server/filename.jpg', function(err) {
    if (err)
      return res.status(500).send(err);

    res.send('File uploaded!');

Your HTML file upload form:

    <form ref='uploadForm' 
        <input type="file" name="sampleFile" />
        <input type='submit' value='Upload!' />

Uploading Multiple Files

express-fileupload supports multiple file uploads at the same time.

Let’s say you have three files in your form, each of the inputs with the name my_profile_pic, my_pet, and my_cover_photo:

<input type="file" name="my_profile_pic" />
<input type="file" name="my_pet" />
<input type="file" name="my_cover_photo" />

These uploaded files would be accessible like so:'/upload', function(req, res) {
  // Uploaded files:

Using Busboy Options

Pass in Busboy options directly to the express-fileupload middleware. Check out the Busboy documentation here.

  limits: { fileSize: 50 * 1024 * 1024 },

Available Options

Pass in non-Busboy options directly to the middleware. These are express-fileupload specific options.

Option Acceptable&nbsp;Values Details
  • false&nbsp;(default)
  • true
  • regex
Strips characters from the upload’s filename. You can use custom regex to determine what to strip. If set to true, non-alphanumeric characters except dashes and underscores will be stripped. This option is off by default.

Example #1 (strip slashes from file names): app.use(fileUpload({ safeFileNames: /\\/g }))
Example #2: app.use(fileUpload({ safeFileNames: true }))

Help Wanted

Pull Requests are welcomed!

Thanks & Credit

Brian White for his stellar work on the Busboy Package and the connect-busboy Package

Related Repositories



Simple express file upload middleware that wraps around busboy ...



Simple express file upload middleware that wraps around connect-busboy ...