Gibt es einen generischen Mime-Typ für alle Bilddateien?

31383
cipricus

Ich weiß, dass ich bestimmte Mime-Typen wie hier aufgeführt verwenden kann, oder einen generischen Mime-Typ für eine beliebige Datei application/octet-stream, aber gibt es einen generischen Mime-Typ für alle Bilddateien?

(Ich möchte eine .desktopDatei in Linux Mint KDE bearbeiten, um in Dolphin File Manager einen Eintrag für das Aktionsmenü zu erstellen, der nur für Bilddateien angezeigt wird.)

23
Würde `image / *` funktionieren (wie Browser)? Boldewyn vor 9 Jahren 1
@Boldewyn - `image / *` funktioniert für den in meiner Frage angegebenen Zweck, auch für `svg`-Dateien - also als Desktop-Eintrag wie` MimeType = image / * `. Beantworten Sie bitte [diese spezifischere Frage] (http://unix.stackexchange.com/q/232525/32012), auf die Sie die Antwort geben. cipricus vor 9 Jahren 0

2 Antworten auf die Frage

24
DavidPostill

Gibt es einen generischen Mime-Typ für alle Bilddateien?

Normalerweise ist das nicht der Fall, aber in dieser Antwort sind einige Ausnahmen dokumentiert.

Sie benötigen einen Mime-Typ, um zu wissen, wie eine Datei verarbeitet wird (ohne den Dateikopf lesen zu müssen).

Anmerkungen:

  • Nicht alle Bilddateien haben einen Header, der ihren Typ identifiziert.

  • SVG-Dateien sind beispielsweise nur XML-Dateien. Ohne den richtigen Mimetyp oder die richtige Erweiterung gibt es keine Möglichkeit, den Dateityp richtig zu identifizieren.

  • MIME-Typen werden als Inhaltstyp / Untertyp angegeben

  • Es gibt keinen Mime-Typ image/generic(die vollständige Liste der bei IANA registrierten Bilduntertypen finden Sie weiter unten unter "Weiterführende Literatur").


Bedeutet das, dass es einen Mime-Typ für mehrere Bilddateien gibt?

Es gibt keine Single Content-Type/subtype, die mehrere Bildformate abdeckt.

Theoretisch könnten Sie einen unbekannten Untertyp verwenden, wie image/xyzW3C jedoch ausdrücklich sagt:

"Ein Inhaltstyp image/xyzreicht aus, um einem Benutzeragenten mitzuteilen, dass es sich bei den Daten um ein Bild handelt, selbst wenn das Benutzerprogramm kein Wissen über das bestimmte Bildformat hat xyz..." Eine solche Aktion kann für nicht erkannte Textuntertypen sinnvoll sein, aber nicht für nicht erkannte Untertypen von Bild oder Audio "

Im Allgemeinen wird der Content-Type der obersten Ebene zur Deklaration des allgemeinen Datentyps verwendet, während der Untertyp ein bestimmtes Format für diesen Datentyp angibt.

Somit reicht ein Inhaltstyp von "image / xyz" aus, um einem Benutzerprogramm mitzuteilen, dass es sich bei den Daten um ein Bild handelt, selbst wenn das Benutzerprogramm keine Kenntnis des spezifischen Bildformats "xyz" hat.

Solche Informationen können beispielsweise verwendet werden, um zu entscheiden, ob einem Benutzer die Rohdaten eines nicht erkannten Untertyps angezeigt werden sollen oder nicht - eine solche Aktion kann für nicht erkannte Untertypen von Text sinnvoll sein, nicht jedoch für nicht erkannte Untertypen von Bild oder Audio.

Aus diesem Grund sollten registrierte Untertypen von Audio, Bild, Text und Video keine eingebetteten Informationen enthalten, die wirklich von einem anderen Typ sind. Solche Verbindungstypen sollten mit den Typen "Multipart" oder "Anwendung" dargestellt werden.

Quelle W3C - Das Feld für den Inhaltstyp-Header


Kann ich image/*für meinen speziellen Fall eine Wildcard verwenden ?

so dass es für meinen Zweck verwendet werden kann, ohne dass die einzelnen Dateierweiterungen / -mimen angegeben werden müssen?

Ja. Wie Sie bereits erwähnt haben, können Sie einen Platzhalter verwenden, wenn Sie den "Desktop Entry" für die KDE- und GNOME-Desktop-Umgebungen angeben.

Beachten Sie jedoch, dass Key = MimeTypeveraltet ist, da es dafür einen neuen Standard gibt.

Type=MimeTypeist veraltet, da es jetzt einen neuen Standard gibt. Weitere Informationen finden Sie in der Spezifikation für die Shared MIME-info-Datenbank . Folglich werden auch die Keys Patterns (verschiedene Dateinamenerweiterungen, die dem MIME-Typ zugeordnet sind) und DefaultApp (die Standardanwendung, die diesem MIME-Typ zugeordnet ist) nicht mehr unterstützt.

Source Desktop Entry-Spezifikation

Sie können auch Platzhalter für MIME-Typen in IIS verwenden. Es wird jedoch empfohlen, dies nicht zu tun:

Sie können IIS auch so konfigurieren, dass nicht definierte Dateitypen bereitgestellt werden, indem Sie einen Platzhalter (*) - MIME-Typ hinzufügen.

Verwenden Sie keine Platzhalter-MIME-Typen auf Produktionsservern. Dies kann dazu führen, dass IIS nicht erkannte Dateien bereitstellt und den Benutzern vertrauliche Informationen anzeigt.

Wildcard-MIME-Typen sind für Testzwecke oder in Szenarien vorgesehen, in denen ISAPI-Filter (Internet Server API) speziell für diese Wildcard-Szenarien entwickelt wurden, z. B. eine benutzerdefinierte Authentifizierungs-ISAPI.

Quelle Erstellen globaler MIME-Typen


Lesen Sie weiter

Bedeutet das, dass es einen Mime-Typ für ** mehrere ** Bilddateien gibt - nicht alle, aber viele, so dass er für meinen Zweck verwendet werden kann, ohne die einzelnen Dateierweiterungen / Mimes angeben zu müssen? cipricus vor 9 Jahren 0
@cipricus Es gibt keinen ** einzigen ** Content-Typ / Subtyp, der mehrere Bildformate abdeckt. DavidPostill vor 9 Jahren 2
@cipricus Antwort aktualisiert, um Ihren Kommentar anzusprechen. DavidPostill vor 9 Jahren 0
Wie in einem Kommentar unter meiner Frage angegeben, funktioniert "image / *" für den in meiner Frage angegebenen Zweck, selbst für "svg" -Dateien - d. h. als Desktop-Eintrag wie "MimeType = image / *". cipricus vor 9 Jahren 0
Es kann gut funktionieren, aber gemäß [Desktop Entry Specification] (http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html) - "` Type = MimeType` wird nicht mehr unterstützt Hierfür gibt es jetzt einen neuen Standard, weitere Informationen finden Sie in der Shared MIME-info-Datenbankspezifikation. Folglich sind die Keys Patterns (verschiedene Dateinamenerweiterungen, die dem MIME-Typ zugeordnet sind) und DefaultApp (die Standardanwendung, die diesem MIME-Typ zugeordnet ist) auch veraltet. " DavidPostill vor 9 Jahren 0
Vielen Dank, dass Sie eine gut dokumentierte Antwort haben. Als praktische Lösung für meinen begrenzten Zweck (Erstellen eines "Action" -Kontextmenüeintrags in Dolphin File Manager, der nur für Bilddateien angezeigt wird), funktioniert `image / *`. In der vorliegenden Form ist Ihre Antwort die angemessenste, aber ich bekomme keine positive Lösung daraus. Ich habe [hier] (http://unix.stackexchange.com/q/232525/32012) eine spezifischere Frage gestellt. cipricus vor 9 Jahren 0
Ich werde die Antwort aktualisieren, um Ihre Lösung für den eingeschränkten Fall aufzunehmen. DavidPostill vor 9 Jahren 0
2
jrast

Laut dieser SO-Answer gibt es keinen generischen MIME-Type. Das Problem ist, dass der MIME-Typ immer aus einem Typ, einem Untertyp und einem optionalen Parameter besteht: Type/Subtype; Parameter(siehe hier ). Sie möchten nur den Typ verwenden, aber per Definition ist ein Subtyp erforderlich, und es gibt keinen generischen Subtyp. Eine Liste aller Bildtypen finden Sie hier .

Seltsamerweise enthält diese Liste "aller" Bildtypen Leerzeichen für "gif" und "jpeg", wohingegen diese Liste https://www.sitepoint.com/web-foundations/mime-types-complete-list/ diese zeigt `image / gif` bzw.` image / jpeg`. user664833 vor 7 Jahren 0