mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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);
 | |
|   };
 | |
| };
 |