From aa55acedc9b138234fd1454f06d9e49b8fbfe7ef Mon Sep 17 00:00:00 2001 From: coord_e Date: Sat, 22 Aug 2020 04:25:25 +0900 Subject: [PATCH] Fix not to reject non-image file uploads (#6664) * fix not to reject non-image file uploads * handle an error from sharp --- src/services/drive/add-file.ts | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts index fbd2f76dd..8d32d06d2 100644 --- a/src/services/drive/add-file.ts +++ b/src/services/drive/add-file.ts @@ -160,12 +160,30 @@ export async function generateAlts(path: string, type: string, generateWeb: bool } } - const img = sharp(path); - const metadata = await img.metadata(); - const isAnimated = metadata.pages && metadata.pages > 1; + if (!['image/jpeg', 'image/png', 'image/webp'].includes(type)) { + logger.debug(`web image and thumbnail not created (not an required file)`); + return { + webpublic: null, + thumbnail: null + }; + } - // skip animated - if (isAnimated) { + let img: sharp.Sharp | null = null; + + try { + img = sharp(path); + const metadata = await img.metadata(); + const isAnimated = metadata.pages && metadata.pages > 1; + + // skip animated + if (isAnimated) { + return { + webpublic: null, + thumbnail: null + }; + } + } catch (e) { + logger.warn(`sharp failed: ${e}`); return { webpublic: null, thumbnail: null