Simple express middleware for uploading files.
Breaking change to md5
handling. Read about it here.
# 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:
- 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
req.files.foo
:
app.post('/upload', function(req, res) {
console.log(req.files.foo); // the uploaded file object
});
The req.files.foo object will contain the following:
req.files.foo.name
: "car.jpg"req.files.foo.mv
: A function to move the file elsewhere on your serverreq.files.foo.mimetype
: The mimetype of your filereq.files.foo.data
: A buffer representation of your filereq.files.foo.truncated
: A boolean that represents if the file is over the size limitreq.files.foo.md5
: A function that returns an MD5 checksum of the uploaded file
Pass in Busboy options directly to the express-fileupload middleware. Check out the Busboy documentation here.
app.use(fileUpload({
limits: { fileSize: 50 * 1024 * 1024 },
}));
Pass in non-Busboy options directly to the middleware. These are express-fileupload specific options.
Option | Acceptable Values | Details |
---|---|---|
createParentPath |
|
Automatically creates the directory path specified in .mv(filePathName) |
safeFileNames |
|
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 })) |
preserveExtension |
|
Preserves filename extension when using safeFileNames option. If set to true , will default to an extension length of 3. If set to Number , this will be the max allowable extension length. If an extension is smaller than the extension length, it remains untouched. If the extension is longer, it is shifted.Example #1 (true): app.use(fileUpload({ safeFileNames: true, preserveExtension: true })); myFileName.ext --> myFileName.ext Example #2 (max extension length 2, extension shifted): app.use(fileUpload({ safeFileNames: true, preserveExtension: 2 })); myFileName.ext --> myFileNamee.xt |
abortOnLimit |
|
Returns a HTTP 413 when the file is bigger than the size limit if true. Otherwise, it will add a truncate = true to the resulting file structure. |
Looking for additional maintainers. Please contact richardgirges [ at ] gmail.com
if you're interested. Pull Requests are welcomed!
Brian White for his stellar work on the Busboy Package and the connect-busboy Package