UNPKG

techdadi-express-starter-ts

Version:

CLI for creating a new Express TypeScript starter project

65 lines (57 loc) 1.53 kB
import multer, { FileFilterCallback } from 'multer'; import path from 'path'; import { Request } from 'express'; const storage = multer.diskStorage({ destination: function (req: Request, file, cb) { cb(null, './uploads/'); }, filename: function (req: Request, file, cb) { cb(null, Date.now() + '-' + file.originalname); }, }); // const fileFilter = ( // req: Request, // file: { mimetype: string }, // cb: (arg0: { message: string } | null, arg1: boolean) => void, // ) => { // if ( // file.mimetype === 'image/jpeg' || // file.mimetype === 'image/jpg' || // file.mimetype === 'image/png' || // file.mimetype === 'image/svg' // ) { // cb(null, true); // } else { // cb({ message: 'Unsupported File Format' }, false); // } // const fileSize = parseInt(req.headers["content-length"]); // if (fileSize > 4194304) { // return callback(new AppError("File size over 4mb", 400)); // } // }; type CustomCallback = ( error: { message: string } | null, acceptFile: boolean, ) => void; const fileFilter = ( req: Request, file: Express.Multer.File, cb: CustomCallback | FileFilterCallback | any, ) => { if ( file.mimetype === 'image/jpeg' || file.mimetype === 'image/jpg' || file.mimetype === 'image/png' || file.mimetype === 'image/svg' ) { cb(null, true); } else { cb({ message: 'Unsupported File Format' }, false); } }; const upload = multer({ storage, limits: { fileSize: 1024 * 1024 }, fileFilter, }); export default upload;