Skip to content

Commit f709bc7

Browse files
[iOS] Fix for the File.ContentType from MediaPicker not being in valid MIME format (#28842)
* [iOS] Fix for 15562 ( File.ContentType from MediaPicker is not in MIME format ). * [iOS] Fix for 15562 (File.ContentType from MediaPicker is not in MIME format) * [iOS] Fix for 15562 (File.ContentType from MediaPicker is not in MIME format) * [iOS] Fix for 15562 ( File.ContentType from MediaPicker is not in MIME format )
1 parent 6cc3345 commit f709bc7

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/Essentials/src/FileSystem/FileSystem.ios.tvos.watchos.macos.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,12 @@ string PlatformGetContentType(string extension)
6767
// ios does not like the extensions
6868
extension = extension?.TrimStart('.');
6969

70-
// var id = UTType.CreatePreferredIdentifier(UTType.TagClassFilenameExtension, extension, null);
71-
// var mimeTypes = UTType.CopyAllTags(id, UniformTypeIdentifiers.UTTagClass.MimeType.ToString());
72-
// return mimeTypes?.Length > 0 ? mimeTypes[0] : null;
70+
// UTType supports only iOS version greater than 14
71+
if (OperatingSystem.IsIOSVersionAtLeast(14))
72+
{
73+
var uti = UniformTypeIdentifiers.UTType.GetType(extension, UniformTypeIdentifiers.UTTagClass.FilenameExtension, null);
74+
extension = uti?.PreferredMimeType ?? extension;
75+
}
7376

7477
return extension;
7578
}

src/Essentials/test/DeviceTests/Tests/FileSystem_Tests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,19 @@ public async Task OpenAppPackageFileAsync_Throws_If_File_Is_Not_Found()
4343
{
4444
await Assert.ThrowsAsync<FileNotFoundException>(() => FileSystem.OpenAppPackageFileAsync("MissingFile.txt")).ConfigureAwait(false);
4545
}
46+
47+
#if MACCATALYST
48+
[Fact]
49+
public async Task ValidateMIMEFormat()
50+
{
51+
string filePath = Path.Combine(FileSystem.CacheDirectory, "sample.txt");
52+
await File.WriteAllTextAsync(filePath, "File Content type is text/plain");
53+
54+
FileResult fileResult = new FileResult(filePath);
55+
Assert.Equal("text/plain", fileResult.ContentType);
56+
57+
File.Delete(filePath);
58+
}
59+
#endif
4660
}
4761
}

0 commit comments

Comments
 (0)