@@ -170,6 +170,27 @@ function getMimeType(fileExtension: string): string {
170170 return MIME_TYPES [ ext ] ?? 'application/octet-stream' ;
171171}
172172
173+ /**
174+ * Derives an image MIME type from a file URI or filename.
175+ * Returns undefined for unrecognized extensions so callers can apply their own fallback.
176+ */
177+ function getMimeTypeFromUri ( uri : string ) : string | undefined {
178+ const { fileExtension} = splitExtensionFromFileName ( uri . split ( '/' ) . pop ( ) ?? uri ) ;
179+ const ext = fileExtension . toLowerCase ( ) ;
180+ const IMAGE_EXTENSION_TO_MIME : Record < string , string > = {
181+ jpg : CONST . SHARE_FILE_MIMETYPE . JPEG ,
182+ jpeg : CONST . SHARE_FILE_MIMETYPE . JPEG ,
183+ png : CONST . SHARE_FILE_MIMETYPE . PNG ,
184+ heic : CONST . SHARE_FILE_MIMETYPE . HEIC ,
185+ heif : CONST . SHARE_FILE_MIMETYPE . HEIF ,
186+ webp : CONST . SHARE_FILE_MIMETYPE . WEBP ,
187+ gif : CONST . SHARE_FILE_MIMETYPE . GIF ,
188+ tif : CONST . SHARE_FILE_MIMETYPE . TIF ,
189+ tiff : CONST . SHARE_FILE_MIMETYPE . TIFF ,
190+ } ;
191+ return ext ? IMAGE_EXTENSION_TO_MIME [ ext ] : undefined ;
192+ }
193+
173194/**
174195 * Returns the filename replacing special characters with underscore
175196 */
@@ -874,6 +895,7 @@ export {
874895 createFile ,
875896 validateReceipt ,
876897 normalizeFileObject ,
898+ getMimeTypeFromUri ,
877899 isValidReceiptExtension ,
878900 getFileValidationErrorText ,
879901 hasHeicOrHeifExtension ,
0 commit comments