123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import multer from 'multer';
- import type { Options } from 'multer';
- import fs from 'fs';
- import { v4 } from 'uuid';
- export const uploadService = () => {
- let folderPath = process.env.NODE_ENV == 'development' ? './src/public/' : './public/';
- 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 splittedFileName = file.originalname.split('.');
- let name = splittedFileName[0];
- const type = splittedFileName[1];
- name += '-' + v4().slice(0, 5) + '.' + type;
- cb(null, name);
- },
- };
- 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 };
- };
|