diff --git a/server/src/utils/mime-types.spec.ts b/server/src/utils/mime-types.spec.ts index eb5dcc3421..8415debf56 100644 --- a/server/src/utils/mime-types.spec.ts +++ b/server/src/utils/mime-types.spec.ts @@ -189,7 +189,7 @@ describe('mimeTypes', () => { it('should contain only video mime types', () => { const values = Object.values(mimeTypes.video).flat(); - expect(values).toEqual(values.filter((mimeType) => mimeType.startsWith('video/'))); + expect(values).toEqual(values.filter((mimeType) => mimeType.startsWith('video/') || mimeType === 'application/mxf')); }); for (const [extension, v] of Object.entries(mimeTypes.video)) { diff --git a/server/src/utils/mime-types.ts b/server/src/utils/mime-types.ts index 0512591fd3..6617f199f1 100644 --- a/server/src/utils/mime-types.ts +++ b/server/src/utils/mime-types.ts @@ -134,6 +134,14 @@ export const mimeTypes = { /** return an extension (including a leading `.`) for a mime-type */ toExtension, assetType: (filename: string) => { + // Check file extension first to handle cases like MXF (application/mxf) that are video containers + if (isType(filename, video)) { + return AssetType.Video; + } + if (isType(filename, image)) { + return AssetType.Image; + } + // Fallback to mime type check for any edge cases const contentType = lookup(filename); if (contentType.startsWith('image/')) { return AssetType.Image;