500 Stimmen

MIME-Typ aus Dateinamenerweiterung ermitteln

Wie kann ich den MIME-Typ aus einer Dateierweiterung ermitteln?

8voto

Alex Klaus Punkte 7205

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")
    });
}

7voto

Arun Sharma Punkte 829

Die meisten Lösungen funktionieren, aber warum sollte man sich so viel Mühe geben, wenn man auch ganz einfach Mime-Type bekommen kann. In der System.Web Assembly gibt es eine Methode, um den Mime-Type aus dem Dateinamen zu ermitteln. z.B.:

string mimeType = MimeMapping.GetMimeMapping(filename);

5voto

Jasvir Singh Punkte 11

Das .Net-Framework bietet eine eingebaute Methode zum Abrufen des Mime-Typs. Sie müssen keinen eigenen Code schreiben.

string mimeType = System.Web.MimeMapping.GetMimeMapping(fileName);

3voto

Bibin Gangadharan Punkte 921

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

2voto

user850129 Punkte 41

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]);
        }
    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X