mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-04-14 07:24:57 +00:00
ImageUpload: Fix errors with .jpeg and .svg
This checks all files that claim to be an svg (by their extension) that they really are and defines the typeFromMagic accordingly Files that got identified as jpg, but have the extension .jpeg get their extension fixed. The files extensions will work in all cases now. Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
parent
be3eee1603
commit
5dbe99b4c7
1 changed files with 17 additions and 2 deletions
|
@ -7,6 +7,7 @@ const FileType = require('file-type')
|
|||
const fs = require('fs')
|
||||
const os = require('os')
|
||||
const rimraf = require('rimraf')
|
||||
const isSvg = require('is-svg')
|
||||
|
||||
const config = require('../../config')
|
||||
const logger = require('../../logger')
|
||||
|
@ -15,12 +16,26 @@ const errors = require('../../errors')
|
|||
const imageRouter = (module.exports = Router())
|
||||
|
||||
async function checkUploadType (filePath) {
|
||||
const typeFromMagic = await FileType.fromFile(filePath)
|
||||
const extension = path.extname(filePath).toLowerCase()
|
||||
let typeFromMagic = await FileType.fromFile(filePath)
|
||||
if (extension === '.svg' && (typeFromMagic === undefined || typeFromMagic.mime === 'application/xml')) {
|
||||
const fileContent = fs.readFileSync(filePath)
|
||||
if (isSvg(fileContent)) {
|
||||
typeFromMagic = {
|
||||
ext: 'svg',
|
||||
mime: 'image/svg+xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
if (typeFromMagic === undefined) {
|
||||
logger.error('Image upload error: Could not determine MIME-type')
|
||||
return false
|
||||
}
|
||||
if (path.extname(filePath) !== '.' + typeFromMagic.ext) {
|
||||
// .jpeg, .jfif, .jpe files are identified by FileType to have the extension jpg
|
||||
if (['.jpeg', '.jfif', '.jpe'].includes(extension) && typeFromMagic.ext === 'jpg') {
|
||||
typeFromMagic.ext = extension.substr(1)
|
||||
}
|
||||
if (extension !== '.' + typeFromMagic.ext) {
|
||||
logger.error(
|
||||
'Image upload error: Provided file extension does not match MIME-type'
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue