El Mehdi Touimi Benjelloun 015b74845c First commit | 5 年 前 | |
---|---|---|
.. | ||
example | 5 年 前 | |
lib | 5 年 前 | |
test | 5 年 前 | |
.eslintignore | 5 年 前 | |
.eslintrc | 5 年 前 | |
.prettierrc | 5 年 前 | |
.travis.yml | 5 年 前 | |
LICENSE | 5 年 前 | |
README.md | 5 年 前 | |
package.json | 5 年 前 |
Simple express middleware for uploading files.
Breaking change to md5
handling:
md5
value contains md5 hash instead of a function to compute it.md5
now can be used with useTempFiles: true
.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:
<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 file, returns empty buffer in case useTempFiles option was set to true.req.files.foo.tempFilePath
: A path to the temporary file in case useTempFiles option was set to true.req.files.foo.truncated
: A boolean that represents if the file is over the size limitreq.files.foo.size
: Uploaded size in bytesreq.files.foo.md5
: MD5 checksum of the uploaded filePass in Busboy options directly to the express-fileupload middleware. Check out the Busboy documentation here.
app.use(fileUpload({
limits: { fileSize: 50 * 1024 * 1024 },
}));
Use temp files instead of memory for managing the upload process.
app.use(fileUpload({
useTempFiles : true,
tempFileDir : '/tmp/'
}));
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. |
responseOnLimit |
| Response which will be send to client if file size limit exceeded when abortOnLimit set to true. |
limitHandler |
|
User defined limit handler which will be invoked if the file is bigger than configured limits. |
useTempFiles |
| Will use temporary files at the specified tempDir for managing uploads rather than using buffers in memory. This avoids memory issues when uploading large files. |
tempFileDir |
|
Used with the useTempFiles option. Path to the directory where temp files will be stored during the upload process. Feel free to add trailing slash, but it is not necessary. |
parseNested |
|
By default, req.body and req.files are flattened like this: {'name': 'John', 'hobbies[0]': 'Cinema', 'hobbies[1]': 'Bike'} When this option is enabled they are parsed in order to be nested like this: {'name': 'John', 'hobbies': ['Cinema', 'Bike']} |