import multer from 'multer' import type { Options } from 'multer' import fs from 'fs' import { v4 } from 'uuid' import path from 'path' export const uploadService = () => { let folderPath = './imgs/' if (!fs.existsSync(folderPath)) { fs.mkdirSync(folderPath, { recursive: true }) } const { limits: templateLimits }: Options = { limits: { files: 1, fieldNameSize: 400, fileSize: 80 * 1024 * 1024, }, }; const { filename }: multer.DiskStorageOptions = { filename: (_req, file, cb) => { const type = path.extname(file.originalname) cb(null, v4() + type) } } const generateHandler = () => { try { const options: Options = { limits: { ...templateLimits, }, storage: multer.diskStorage({ filename, destination: folderPath }), }; return multer(options).single('imgs'); } catch (e) { console.error('Upload error', e) throw e; } }; return { generateHandler }; };