UNPKG

1.27 kBJavaScriptView Raw
1'use strict';
2
3const fileFactory = require('./fileFactory');
4const processNested = require('./processNested');
5const processMultipart = require('./processMultipart');
6const isEligibleRequest = require('./isEligibleRequest');
7const { buildOptions, debugLog } = require('./utilities');
8
9const DEFAULT_OPTIONS = {
10 debug: false,
11 uploadTimeout: 60000,
12 fileHandler: false,
13 uriDecodeFileNames: false,
14 safeFileNames: false,
15 preserveExtension: false,
16 abortOnLimit: false,
17 responseOnLimit: 'File size limit has been reached',
18 limitHandler: false,
19 createParentPath: false,
20 parseNested: false,
21 useTempFiles: false,
22 tempFileDir: '/tmp'
23};
24
25/**
26 * Expose the file upload middleware
27 * @param {Object} options - Middleware options.
28 * @returns {Function}
29 */
30module.exports = (options) => {
31 const fileUploadOptions = buildOptions(DEFAULT_OPTIONS, options);
32
33 return (req, res, next) => {
34 if (!isEligibleRequest(req)) {
35 debugLog(fileUploadOptions, 'Request is not eligible for file upload!');
36 return next();
37 }
38 processMultipart(fileUploadOptions, req, res, next);
39 };
40};
41
42/**
43 * Quietly expose fileFactory and processNested; useful for testing
44 */
45module.exports.fileFactory = fileFactory;
46module.exports.processNested = processNested;