我在一个控制器中实现了一个简单的Nestjs路由,用于上传文件。文件是用Multer处理的。因为它的目的是编辑用户的个人资料图片,所以我需要验证文件是一个图像。但是由于某种原因,我不能用FileTypeValidator
运行它。上传的文件每次都被拒绝。
@UseInterceptors(
FileInterceptor('file', {
storage: MulterService.getStorage((req, file, cb) => {
const filename = `${uuidv4()}`;
const extension = path.parse(file.originalname).ext;
cb(null, `${filename}${extension}`);
}, MulterService.destinations.profilePictures),
})
)
@Post('profile-picture')
editProfilePicture(
@UploadedFile(
new ParseFilePipe({
validators: [new FileTypeValidator({ fileType: 'png' })],
// png files always denied
// /\^(jpeg|jpg|png|gif)$/ regex isn't working either
})
)
file: Express.Multer.File
): Promise<User> {
// ...
}
1条答案
按热度按时间7d7tgy0s1#
我测试了你的正则表达式模式,它似乎与你提供的图像扩展名不匹配,而是假设开头总是有点字符。所以我所做的是从正则表达式中删除前两个字符
\.
,它可以工作。下面是最终的正则表达式:(jpeg|jpg|png|gif)$
编辑可通过ParseFilePipe或ParseFilePipeBuilder验证管道进行验证ParseFilePipe
ParseFilePipeBuilder