diff --git a/helpers/files/file-check-mime-types.js b/helpers/files/file-check-mime-types.js index c6b438f9..2f1eedad 100644 --- a/helpers/files/file-check-mime-types.js +++ b/helpers/files/file-check-mime-types.js @@ -5,6 +5,9 @@ const imageMimeTypes = new Set([ 'image/pjpeg', 'image/png', 'image/bmp', +]); + +const animatedImageMimeTypes = new Set([ 'image/gif', 'image/webp', ]); @@ -16,6 +19,6 @@ const videoMimeTypes = new Set([ module.exports = (mimetype, options) => { - return (options.video && videoMimeTypes.has(mimetype)) || (options.image && imageMimeTypes.has(mimetype)); + return (options.video && videoMimeTypes.has(mimetype)) || (options.image && imageMimeTypes.has(mimetype) || options.animatedImage && animatedImageMimeTypes.has(mimetype)); }; diff --git a/models/forms/make-post.js b/models/forms/make-post.js index e578d6e4..ca8e9d03 100644 --- a/models/forms/make-post.js +++ b/models/forms/make-post.js @@ -77,7 +77,7 @@ module.exports = async (req, res, next, numFiles) => { if (numFiles > 0) { // check all mime types befoer we try saving anything for (let i = 0; i < numFiles; i++) { - if (!fileCheckMimeType(req.files.file[i].mimetype, {image: true, video: true})) { + if (!fileCheckMimeType(req.files.file[i].mimetype, {animatedImage: true, image: true, video: true})) { return res.status(400).render('message', { 'title': 'Bad request', 'message': `Invalid file type for ${req.files.file[i].name}. Mimetype ${req.files.file[i].mimetype} not allowed.`, @@ -109,7 +109,9 @@ module.exports = async (req, res, next, numFiles) => { processedFile.geometry = imageData.size // object with width and height pixels processedFile.sizeString = formatSize(processedFile.size) // 123 Ki string processedFile.geometryString = imageData.Geometry // 123 x 123 string - if (processedFile.geometry.height <= 128 && processedFile.geometry.width <= 128) { + if (fileCheckMimeType(file.mimetype, {image: true}) //always thumbnail gif/webp + && processedFile.geometry.height <= 128 + && processedFile.geometry.width <= 128) { processedFile.hasThumb = false; } else { processedFile.hasThumb = true; diff --git a/models/forms/uploadbanners.js b/models/forms/uploadbanners.js index bbf26f80..980b31ba 100644 --- a/models/forms/uploadbanners.js +++ b/models/forms/uploadbanners.js @@ -16,7 +16,7 @@ module.exports = async (req, res, next, numFiles) => { // check all mime types befoer we try saving anything for (let i = 0; i < numFiles; i++) { - if (!fileCheckMimeType(req.files.file[i].mimetype, {image: true, video: false})) { + if (!fileCheckMimeType(req.files.file[i].mimetype, {image: true, animatedImage: true, video: false})) { return res.status(400).render('message', { 'title': 'Bad request', 'message': `Invalid file type for ${req.files.file[i].name}. Mimetype ${req.files.file[i].mimetype} not allowed.`,