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&pid=42\" target=\"_blank\" rel=\"nofollow\">Upgrade To Grepper Professional</a>"}]}
Source : | Last Update : Mon, 27 Mar 23