wake-up-neo.com

Unbekannter Dateityp MIME?

Muss ich einen MIME-Typ angeben, wenn die hochgeladene Datei keine Erweiterung hat? Mit anderen Worten, gibt es einen allgemeinen MIME-Standardtyp?

130
Shimmy

Sie können application/octet-stream für unbekannte Typen.

RFC 2046 gibt in Abschnitt 4.5.1 an:

Der Subtyp "Octet-Stream" gibt an, dass ein Body beliebige Binärdaten enthält.

168
Bombe

RFC-Ressourcen:

Wir sollten RFC-7231 (HTTP/1.1 Semantik und Inhalt) als Referenz anstelle von RFC-2046 (Medientypen) verwenden, da die Frage eindeutig den HTTP-Inhaltstyp betraf.

Auch RFC-2046 definiert unbekannte Typen nicht klar, RFC-7231 jedoch.

Kurze Antwort:

Senden Sie keinen MIME-Typ für unbekannte Daten.
Um es klarer zu machen: Verwenden Sie überhaupt keinen Content-Type-Header.

Verweise:

RFC-7231
Hypertext Transfer Protocol (HTTP/1.1): Semantik und Inhalt
.1.1.5. Inhaltstyp

Ein Absender, der eine Nachricht generiert, die einen Nutzlastkörper enthält, SOLLTE
in dieser Nachricht ein Content-Type-Header-Feld generieren, es sei denn, das
vorgesehener Medientyp der beigefügten Darstellung ist dem nicht bekannt
Absender.

In diesem Abschnitt wird klargestellt, dass Sie darauf verzichten müssen, wenn Sie es nicht genau wissen. Es wird auch angegeben, dass der Empfänger davon ausgehen könnte, dass der Typ application/octet-stream ist, es kann sich aber auch um etwas anderes handeln.

Was ist denn anders?

RFC-2046
4.5.1. Octet-Stream-Subtyp

Die empfohlene Aktion für eine Implementierung, die eine
"application/octet-stream" -Entität soll einfach anbieten, die Daten zu setzen
in einer Datei, bei der eine Content-Transfer-Codierung rückgängig gemacht wurde, oder vielleicht zu
Verwenden Sie es als Eingabe für einen benutzerdefinierten Prozess.

Und wie oben schon gesagt:

RFC-7231
.1.1.5. Inhaltstyp

Wenn kein Content-Type-Header-Feld vorhanden ist, kann der Empfänger entweder einen Medientyp "application/octet-stream" annehmen.
([RFC2046], Abschnitt 4.5.1) oder untersuchen Sie die Daten, um ihren Typ zu bestimmen.

Fazit:

Wenn Sie es als "application/octet-stream" definieren, sagen Sie, dass Sie wissen, dass es sich um "application/octet-stream" handelt.

Wenn Sie es nicht definieren, sagen Sie, dass Sie nicht wissen, was es ist, und überlassen die Entscheidung dem Empfänger. Der Empfänger könnte dann prüfen, ob es wie Ente und ...

34
Sampo Sarrala

Ich bevorzuge application/unknown, aber das Ergebnis wird sicherlich das gleiche sein wie application/octet-stream

13
Lada