123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict';
- const path = require('path');
- const processMultipart = require('./processMultipart');
- const isEligibleRequest = require('./isEligibleRequest');
- const { buildOptions, debugLog } = require('./utilities');
- const busboy = require('busboy'); // eslint-disable-line no-unused-vars
- const DEFAULT_OPTIONS = {
- debug: false,
- uploadTimeout: 60000,
- fileHandler: false,
- uriDecodeFileNames: false,
- safeFileNames: false,
- preserveExtension: false,
- abortOnLimit: false,
- responseOnLimit: 'File size limit has been reached',
- limitHandler: false,
- createParentPath: false,
- parseNested: false,
- useTempFiles: false,
- tempFileDir: path.join(process.cwd(), 'tmp')
- };
- /**
- * Expose the file upload middleware
- * @param {DEFAULT_OPTIONS & busboy.BusboyConfig} options - Middleware options.
- * @returns {Function} - express-fileupload middleware.
- */
- module.exports = (options) => {
- const uploadOptions = buildOptions(DEFAULT_OPTIONS, options);
- return (req, res, next) => {
- if (!isEligibleRequest(req)) {
- debugLog(uploadOptions, 'Request is not eligible for file upload!');
- return next();
- }
- processMultipart(uploadOptions, req, res, next);
- };
- };
|