我制作了一個控制器,控制器接收影像檔案。但我想過濾影像擴展名 (jpg/png/gif) 然后我創建了一個影像過濾器功能,該功能可以正常作業,但是當該功能拋出錯誤時。獲取錯誤回應500 internal server error但終端顯示影像的實際錯誤Only image files are allowed!
我不能接受來自回呼函式的錯誤來回傳回應這個錯誤。這里回呼的任何解決方案都會回傳錯誤
//this is Image Filter Function
export const imageFileFilter = (req, file, callback) => {
if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
return callback(new Error('Only image files are allowed!'), false);
}
callback(null, true);
};
控制器檔案代碼
@Post('/profile-image')
@UseInterceptors(FilesInterceptor('img', 1, { fileFilter: imageFileFilter }))
async profile(
@UploadedFile() file,
): Promise<string> {
return await this.prfile.upload(file);
}
uj5u.com熱心網友回復:
問題是 Nest 的默認例外過濾器將任何不是HttpException(來自 Nest 的錯誤類)的實體的錯誤視為 anInternal Server Error并且只發回 500。為了解決這個問題,您可以使用HttpException子類(如BadRequestException),也可以創建您自己的例外過濾器將讀取錯誤并發送適當的回應。兩種方法都可以,但HttpException方法更直接
uj5u.com熱心網友回復:
添加BadRequestException下班后正確性時
//this is Image Filter Function
export const imageFileFilter = (req, file, callback) => {
if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
return callback(
new BadRequestException('Only image files are allowed!'),
false,
);
}
callback(null, true);
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351719.html
