@@ -37,14 +37,18 @@ const storage = multer.memoryStorage();
3737const upload = multer ( {
3838 storage,
3939 limits : {
40- fileSize : 5 * 1024 * 1024 , // 10MB limit
40+ fileSize : 10 * 1024 * 1024 , // 10MB limit
4141 files : 10 // Maximum 10 files
4242 } ,
4343 fileFilter : ( req , file , cb ) => {
44- // Combine banner image types with resource file types
45- const bannerImageTypes = [ 'image/jpeg' , 'image/jpg' , 'image/png' , 'image/webp' , 'image/svg+xml' ] ;
44+ const imageTypes = [
45+ 'image/jpeg' , 'image/jpg' , 'image/png' , 'image/webp' , 'image/svg+xml' ,
46+ 'image/x-xbitmap' , 'image/tiff' , 'image/jpeg' , 'image/vnd.mozilla-apng' ,
47+ 'image/svg+xml-compressed' , 'image/x-icon' , 'image/heif' , 'image/heic' ,
48+ 'image/avif' , 'image/bmp' , 'image/pjpeg'
49+ ] ;
4650 const resourceFileTypes = Object . keys ( SUPPORTED_RESOURCE_FILE_TYPES ) ;
47- const allowedMimeTypes = [ ...new Set ( [ ...bannerImageTypes , ...resourceFileTypes ] ) ] ;
51+ const allowedMimeTypes = [ ...new Set ( [ ...imageTypes , ...resourceFileTypes ] ) ] ;
4852
4953 if ( allowedMimeTypes . includes ( file . mimetype ) ) {
5054 cb ( null , true ) ;
@@ -88,24 +92,7 @@ async function uploadToAzure(file: Express.Multer.File, containerName: string):
8892 return blockBlobClient . url ;
8993}
9094
91- // Fallback: Save to local uploads directory
92- function saveToLocal ( file : Express . Multer . File , containerName : string ) : string {
93- const uploadsDir = path . join ( process . cwd ( ) , 'public' , 'uploads' , containerName ) ;
94- const fileExtension = path . extname ( file . originalname ) ;
95- const fileName = `${ uuidv4 ( ) } ${ fileExtension } ` ;
96- const filePath = path . join ( uploadsDir , fileName ) ;
97-
98- // Create directory if it doesn't exist
99- if ( ! fs . existsSync ( uploadsDir ) ) {
100- fs . mkdirSync ( uploadsDir , { recursive : true } ) ;
101- }
102-
103- // Write file
104- fs . writeFileSync ( filePath , file . buffer ) ;
105-
106- // Return relative URL
107- return `/public/uploads/${ containerName } /${ fileName } ` ;
108- }
95+ // saveToLocal() function removed - Azure Blob Storage is required
10996
11097// Process uploaded files and add URLs to request body
11198async function processUploads ( req : Request , res : Response , next : NextFunction ) {
@@ -139,7 +126,7 @@ async function processUploads(req: Request, res: Response, next: NextFunction) {
139126 if ( blobServiceClient ) {
140127 fileUrl = await uploadToAzure ( file , BANNERS_CONTAINER_NAME ) ;
141128 } else {
142- fileUrl = saveToLocal ( file , BANNERS_CONTAINER_NAME ) ;
129+ throw new Error ( 'Azure Blob Storage is required for file uploads.' ) ;
143130 }
144131
145132 // Create asset object
@@ -257,7 +244,7 @@ export const uploadSwepImage = async (req: Request, res: Response, next: NextFun
257244 if ( blobServiceClient ) {
258245 fileUrl = await uploadToAzure ( file , SWEPS_CONTAINER_NAME ) ;
259246 } else {
260- fileUrl = saveToLocal ( file , SWEPS_CONTAINER_NAME ) ;
247+ throw new Error ( 'Azure Blob Storage is required for file uploads.' ) ;
261248 }
262249
263250 // Attach uploaded file info to request body
@@ -302,7 +289,7 @@ export const uploadResourceFiles = async (req: Request, res: Response, next: Nex
302289 if ( blobServiceClient ) {
303290 fileUrl = await uploadToAzure ( file , RESOURCES_CONTAINER_NAME ) ;
304291 } else {
305- fileUrl = saveToLocal ( file , RESOURCES_CONTAINER_NAME ) ;
292+ throw new Error ( 'Azure Blob Storage is required for file uploads.' ) ;
306293 }
307294
308295 // Attach uploaded file URL to request body using the field name
@@ -340,7 +327,7 @@ export const uploadLocationLogo = async (req: Request, res: Response, next: Next
340327 if ( blobServiceClient ) {
341328 fileUrl = await uploadToAzure ( file , LOCATION_LOGOS_CONTAINER_NAME ) ;
342329 } else {
343- fileUrl = saveToLocal ( file , LOCATION_LOGOS_CONTAINER_NAME ) ;
330+ throw new Error ( 'Azure Blob Storage is required for file uploads.' ) ;
344331 }
345332
346333 // Attach uploaded file path to request body
0 commit comments