File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change
1
+ import multer from "multer" ;
2
+ import { v4 as uuidv4 } from "uuid" ;
3
+ import { AppError } from "../utils/AppError.js" ;
4
+
5
+ const createMulterUploader = ( folderName ) => {
6
+ const storage = multer . diskStorage ( {
7
+ destination : ( req , file , cb ) => {
8
+ cb ( null , `uploads/${ folderName } ` ) ;
9
+ } ,
10
+ filename : ( req , file , cb ) => {
11
+ cb ( null , uuidv4 ( ) + " - " + file . originalname ) ;
12
+ } ,
13
+ } ) ;
14
+
15
+ function fileFilter ( req , file , cb ) {
16
+ if ( file . mimetype . startsWith ( "image/" ) ) {
17
+ cb ( null , true ) ;
18
+ } else {
19
+ cb ( new AppError ( "Not supporting this mimetype" , 401 ) , false ) ;
20
+ }
21
+ }
22
+
23
+ const upload = multer ( { storage, fileFilter } ) ;
24
+
25
+ return upload ;
26
+ } ;
27
+
28
+ export const uploadSingleFile = ( fieldName , folderName ) => {
29
+ return createMulterUploader ( folderName ) . single ( fieldName ) ;
30
+ } ;
31
+
32
+ export const uploadMultipleFiles = ( arrayOfFields , folderName ) => {
33
+ return createMulterUploader ( folderName ) . fields ( arrayOfFields ) ;
34
+ } ;
You can’t perform that action at this time.
0 commit comments