Wie kann ich den MIME-Typ aus einer Dateierweiterung ermitteln?
Antworten
Zu viele Anzeigen?Um den Beitrag umfassender zu gestalten, für .NET Core Devs gibt es FileExtensionContentTypeProvider Klasse, die den offiziellen MIME-Inhaltstypen .
Sie arbeitet im Hintergrund und setzt den ContentType in den Http-Antwort-Headern auf der Grundlage der Dateinamenerweiterung.
Falls Sie spezielle MIME-Typen benötigen, siehe Beispiel für die Anpassung der MIME-Typen :
public void Configure(IApplicationBuilder app)
{
// Set up custom content types -associating file extension to MIME type
var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".myapp"] = "application/x-msdownload";
provider.Mappings[".htm3"] = "text/html";
provider.Mappings[".image"] = "image/png";
// Replace an existing mapping
provider.Mappings[".rtf"] = "application/x-msdownload";
// Remove MP4 videos.
provider.Mappings.Remove(".mp4");
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")),
RequestPath = new PathString("/MyImages"),
ContentTypeProvider = provider
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")),
RequestPath = new PathString("/MyImages")
});
}
Verwenden Sie das Paket MimeTypeMap, das eine umfangreiche Zwei-Wege-Zuordnung von Dateierweiterungen zu Mime-Typen und von Mime-Typen zu Dateierweiterungen bietet
unter Verwendung von MimeTypes;
Den Mime-Typ einer Erweiterung zuordnen
Console.WriteLine("txt -> " + MimeTypeMap.GetMimeType("txt")); // "text/plain"
Abrufen der Erweiterung eines Mime-Typs
Console.WriteLine("audio/wav -> " + MimeTypeMap.GetExtension("audio/wav")); // ".wav"
GitHub Url: https://github.com/samuelneff/MimeTypeMap
Das folgende Skript liefert Ihnen ein Wörterbuch mit allen Mimetypen, wenn Sie die Apache-Liste verwenden.
var mimeTypeListUrl = "http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types";
var webClient = new WebClient();
var rawData = webClient.DownloadString(mimeTypeListUrl).Split(new[] { Environment.NewLine, "\n" }, StringSplitOptions.RemoveEmptyEntries);
var extensionToMimeType = new Dictionary<string, string>();
var mimeTypeToExtension = new Dictionary<string, string[]>();
foreach (var row in rawData)
{
if (row.StartsWith("#")) continue;
var rowData = row.Split(new[] { "\t" }, StringSplitOptions.RemoveEmptyEntries);
if (rowData.Length != 2) continue;
var extensions = rowData[1].Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
if (!mimeTypeToExtension.ContainsKey(rowData[0]))
{
mimeTypeToExtension.Add(rowData[0], extensions);
}
foreach (var extension in extensions)
{
if (!extensionToMimeType.ContainsKey(extension))
{
extensionToMimeType.Add(extension, rowData[0]);
}
}
}