import { Request, Response } from "express"; import multer from "multer"; import path from "path"; import GenerateThumbnail from "../util/generateThumbnail"; import { FolderPaths } from "../util/serverInit"; import { JobsListMedia } from "./jobsListMedia"; export const JobMediaUploadMulter = multer({ storage: multer.diskStorage({ destination: function (req, file, cb) { const ro_number: string = (req.body.ro_number || "").trim(); const DestinationFolder: string = path.join(FolderPaths.Jobs, ro_number); cb(null, DestinationFolder); }, filename: function (req, file, cb) { console.log(path.basename(file.originalname)); cb( null, `${file.originalname}-${Math.floor(Date.now() / 1000)}.${path.extname( file.originalname )}` ); }, }), }); export async function jobsUploadMedia(req: Request, res: Response) { const ro_number: string = (req.body.ro_number || "").trim(); try { if (!req.files) { res.send({ status: false, message: "No file uploaded", }); } else { const thumbnailGenerationQueue: Promise[] = []; //for each file.path, generate the thumbnail. (req.files as Express.Multer.File[]).forEach((file) => { thumbnailGenerationQueue.push( GenerateThumbnail( file.path, path.join( FolderPaths.Jobs, ro_number, FolderPaths.ThumbsSubDir, file.originalname ) ) ); }); await Promise.all(thumbnailGenerationQueue); JobsListMedia(req, res); } } catch (err) { res.status(500).send(err); } }