11import { Request , Response } from 'express'
22
3+ import { AppResponse } from '@/common/types'
34import crypto from 'crypto'
45import multer , { MulterError } from 'multer'
56import path from 'path'
@@ -20,11 +21,15 @@ const fileFilter = (
2021 file : Express . Multer . File ,
2122 cb : multer . FileFilterCallback ,
2223) => {
23- const allowedTypes = [ 'image/jpeg' , 'image/png' , ' application/pdf']
24+ const allowedTypes = [ 'application/pdf' ]
2425 if ( allowedTypes . includes ( file . mimetype ) ) {
2526 cb ( null , true )
2627 } else {
27- cb ( new Error ( 'Invalid file type. Only JPEG, PNG, and PDF are allowed.' ) )
28+ cb (
29+ new Error ( 'Invalid file type. Only PDF files are allowed.' , {
30+ cause : 'FILE_NOT_ALLOWED' ,
31+ } ) ,
32+ )
2833 }
2934}
3035
@@ -40,21 +45,50 @@ export const uploadMultipleDocs = multer({
4045 limits : { fileSize : 5 * 1024 * 1024 } ,
4146} ) . array ( 'documents' , 10 )
4247
43- export function handleMulterErrorMessages ( err : any , res : Response ) : Response {
48+ export function handleMulterErrorMessages (
49+ err : any ,
50+ res : AppResponse ,
51+ ) : Response {
4452 if ( err instanceof MulterError ) {
4553 switch ( err . code ) {
4654 case 'LIMIT_FILE_SIZE' :
47- return res . status ( 400 ) . json ( { error : 'File size exceeds the limit!' } )
55+ return res . status ( 400 ) . json ( {
56+ error : {
57+ message : 'File size exceeds the limit!' ,
58+ } ,
59+ } )
4860 case 'LIMIT_FILE_COUNT' :
49- return res . status ( 400 ) . json ( { error : 'Too many files uploaded!' } )
61+ return res . status ( 400 ) . json ( {
62+ error : {
63+ message : 'Too many files uploaded!' ,
64+ } ,
65+ } )
5066 case 'LIMIT_UNEXPECTED_FILE' :
51- return res . status ( 400 ) . json ( { error : 'Unexpected file uploaded!' } )
67+ return res . status ( 400 ) . json ( {
68+ error : {
69+ message : 'Unexpected file uploaded!' ,
70+ } ,
71+ } )
5272 default :
53- return res
54- . status ( 400 )
55- . json ( { error : 'Unexpected error was occurred while uploading!' } )
73+ return res . status ( 400 ) . json ( {
74+ error : {
75+ message : 'Unexpected error was occurred while uploading!' ,
76+ } ,
77+ } )
5678 }
5779 }
5880
59- return res . status ( 500 ) . json ( { error : 'An unknown error occurred!' } )
81+ if ( err instanceof Error && err . cause == 'FILE_NOT_ALLOWED' ) {
82+ return res . status ( 400 ) . json ( {
83+ error : {
84+ message : err . message ,
85+ } ,
86+ } )
87+ }
88+
89+ return res . status ( 500 ) . json ( {
90+ error : {
91+ message : 'An unknown error occurred!' ,
92+ } ,
93+ } )
6094}
0 commit comments