Refactor video extensions logic in server

This commit is contained in:
Chocobozzz 2020-08-10 14:25:29 +02:00 committed by Chocobozzz
parent 560605026b
commit 30bc55c88b
6 changed files with 87 additions and 52 deletions

View file

@ -6,6 +6,7 @@ import { deleteFileAsync, generateRandomString } from './utils'
import { extname } from 'path'
import { isArray } from './custom-validators/misc'
import { CONFIG } from '../initializers/config'
import { getExtFromMimetype } from './video'
function buildNSFWFilter (res?: express.Response, paramNSFW?: string) {
if (paramNSFW === 'true') return true
@ -65,7 +66,7 @@ function badRequest (req: express.Request, res: express.Response) {
function createReqFiles (
fieldNames: string[],
mimeTypes: { [id: string]: string },
mimeTypes: { [id: string]: string | string[] },
destinations: { [fieldName: string]: string }
) {
const storage = multer.diskStorage({
@ -76,13 +77,13 @@ function createReqFiles (
filename: async (req, file, cb) => {
let extension: string
const fileExtension = extname(file.originalname)
const extensionFromMimetype = mimeTypes[file.mimetype]
const extensionFromMimetype = getExtFromMimetype(mimeTypes, file.mimetype)
// Take the file extension if we don't understand the mime type
// We have the OGG/OGV exception too because firefox sends a bad mime type when sending an OGG file
if (fileExtension === '.ogg' || fileExtension === '.ogv' || !extensionFromMimetype) {
if (!extensionFromMimetype) {
extension = fileExtension
} else {
// Take the first available extension for this mimetype
extension = extensionFromMimetype
}