Nestjs Multer

[Solved] Nestjs Multer | Php Frameworks Yii - Code Explorer | yomemimo.com
Question : multer nestjs

Answered by : restu-wahyu-saputra

import 'dotenv/config.js'
import { MulterModule, FileFieldsInterceptor, FilesInterceptor, FileInterceptor } from '@nestjs/platform-express'
import { mimeTypeSupport } from '@helpers/helper.mimeType'
import aws from 'aws-sdk'
import { Request } from 'express'
import multer from 'multer'
import multerS3 from 'multer-s3'
import fs from 'fs'
aws.config.update({	accessKeyId: process.env.AWS_ACCESS_KEY_ID,	secretAccessKey: process.env.AWS_ACCESS_KEY
})
export class Multer {	static typeModule = MulterModule	static register = MulterModule.register	static fields = FileFieldsInterceptor	static array = FilesInterceptor	static single = FileInterceptor	static diskStorage: multer.StorageEngine = multer.diskStorage({	destination(_: Request, file: Express.Multer.File, done: any) {	let linux: string = `${process.env.IMG_DIR}`	let window: string = process.env.TEMP || ''	if (!file) {	done(new Error('Uploading file failed'), null)	} else {	if (process.platform === 'win32') {	if (fs.existsSync(window)) {	done(null, window)	} else {	done(new Error('No such file directory').message, null)	}	} else {	if (fs.existsSync(linux)) {	done(null, linux)	} else {	done(new Error('No such file directory').message, null)	}	}	}	},	filename(_req: Request, file: Express.Multer.File, done: any) {	if (!file) done(new Error('Get file upload failed'), null)	const fileName: string = `${Date.now().toString()} - ${file.originalname}`	done(null, fileName)	}	})	static awsStorage: multer.StorageEngine = multerS3({	s3: new aws.S3(),	bucket: process.env.AWS_BUCKET_NAME,	contentType: multerS3.AUTO_CONTENT_TYPE,	serverSideEncryption: 'AES256',	metadata(_req: Request, file: Express.Multer.File, done: any) {	if (!file) done(new Error('Get file upload failed'), null)	done(null, file)	},	key(_req: Request, file: Express.Multer.File, done: any) {	done(null, Date.now().toString())	}	})	static fileFilter(_req: Request, file: Express.Multer.File, done: any) {	if (!mimeTypeSupport(file.mimetype)) throw new TypeError('mimetype not supported')	if (file.size >= 5242880) throw new TypeError('maximum file or image size must be 5 MB or under 5 MB')	const fileName: string = `${Date.now().toString()} - ${file.originalname}`	done(null, fileName)	}
}

Source : | Last Update : Mon, 14 Mar 22

Question : nestjs multer

Answered by : restu-wahyu-saputra

// use like this	// @Role('customers')	@UseGuards(JsonWebToken.JwtAuthentication)	@Version('1')	@Post(':action')	@UseInterceptors(	Multer.fields(	[	{ name: 'ktp_photo', maxCount: 1 },	{ name: 'selfie_photo', maxCount: 1 }	],	{	storage: Multer.diskStorage,	fileFilter: Multer.fileFilter	}	)	)	async signatureHandlers(	@Res() res: Response,	@Req() req: Request,	@Body() body: any,	@UploadedFiles() files: { ktp_photo: Express.Multer.File[]; selfie_photo: Express.Multer.File[]; document?: Express.Multer.File[] }	): Promise<OutgoingMessage> {	try {	const serviceResponse: APIResponse = await this.service.signatureHandlers(body, files)	return res.status(serviceResponse.stat_code).json(serviceResponse)	} catch (e: any) {	return res.status(e.stat_code).json(e)	}	}
}
// custom libs multer
import 'dotenv/config.js'
import { MulterModule, FileFieldsInterceptor, FilesInterceptor, FileInterceptor } from '@nestjs/platform-express'
import { mimeTypeSupport } from '@helpers/helper.mimeType'
import aws from 'aws-sdk'
import { Request } from 'express'
import multer from 'multer'
import multerS3 from 'multer-s3'
import fs from 'fs'
aws.config.update({	accessKeyId: process.env.AWS_ACCESS_KEY_ID,	secretAccessKey: process.env.AWS_ACCESS_KEY
})
export class Multer {	static typeModule = MulterModule	static register = MulterModule.register	static fields = FileFieldsInterceptor	static array = FilesInterceptor	static single = FileInterceptor	static diskStorage: multer.StorageEngine = multer.diskStorage({	destination(_: Request, file: Express.Multer.File, done: any) {	let linux: string = `${process.env.IMG_DIR}`	let window: string = process.env.TEMP || ''	if (!file) {	done(new Error('Uploading file failed'), null)	} else {	if (process.platform === 'win32') {	if (fs.existsSync(window)) {	done(null, window)	} else {	done(new Error('No such file directory').message, null)	}	} else {	if (fs.existsSync(linux)) {	done(null, linux)	} else {	done(new Error('No such file directory').message, null)	}	}	}	},	filename(_req: Request, file: Express.Multer.File, done: any) {	if (!file) done(new Error('Get file upload failed'), null)	const fileName: string = `${Date.now().toString()} - ${file.originalname}`	done(null, fileName)	}	})	static awsStorage: multer.StorageEngine = multerS3({	s3: new aws.S3(),	bucket: process.env.AWS_BUCKET_NAME,	contentType: multerS3.AUTO_CONTENT_TYPE,	serverSideEncryption: 'AES256',	key(_req: Request, file: Express.Multer.File, done: any) {	const fileName: string = `${Date.now().toString()} - ${file.originalname}`	done(null, fileName)	}	})	static fileFilter(_req: Request, file: Express.Multer.File, done: any) {	if (!mimeTypeSupport(file.mimetype)) throw new TypeError('mimetype not supported')	if (file.size >= 5242880) throw new TypeError('maximum file or image size must be 5 MB or under 5 MB')	const fileName: string = `${Date.now().toString()} - ${file.originalname}`	done(null, fileName)	}
}

Source : | Last Update : Wed, 09 Mar 22

Question : grepper subscription required

Answered by : code-grepper

{"tags":[{"tag":"p","content":"You have reached your max daily Grepper answers. <a href=\"https://www.grepper.com/subscriptions.php\" target=\"_blank\" rel=\"nofollow\">Upgrade to professional </a>to view more Grepper answer today."},{"tag":"p","content":"<a href=\"https://www.grepper.com/api/view_product.php?hl=1&amp;pid=42\" target=\"_blank\" rel=\"nofollow\">Upgrade To Grepper Professional</a>"}]}

Source : | Last Update : Mon, 27 Mar 23

Answers related to nestjs multer

Code Explorer Popular Question For Php Frameworks Yii