Muss ich einen MIME-Typ angeben, wenn die hochgeladene Datei keine Erweiterung hat? Mit anderen Worten, gibt es einen allgemeinen Standard-MIME-Typ?
Muss ich einen MIME-Typ angeben, wenn die hochgeladene Datei keine Erweiterung hat? Mit anderen Worten, gibt es einen allgemeinen Standard-MIME-Typ?
Antworten:
Sie können application/octet-stream
für unbekannte Typen verwenden.
RFC 2046- Zustände in Abschnitt 4.5.1:
Der Subtyp "Oktettstrom" wird verwendet, um anzuzeigen, dass ein Körper beliebige Binärdaten enthält.
application/octet-stream
Datei ausführbar ist. Und selbst wenn ein Browser wird wissentlich eine ausführbare Datei herunterzuladen, ist es nicht „ausführen möglicherweise“ es ohne den Benutzer auffordert , zu; Das bloße Herunterladen einer ausführbaren Datei bedeutet nicht, dass ich möchte, dass sie jetzt ausgeführt wird. Wenn es wirklich einen Browser gibt, der application/octet-stream
Dateien beim Herunterladen automatisch ausführt , teilen Sie uns mit, welcher und wie das Verhalten reproduziert werden soll. Im Moment glaube ich dir nicht.
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.
Senden Sie keinen MIME-Typ für unbekannte Daten.
Um es klarer zu machen: Verwenden Sie überhaupt keinen Content-Type-Header.
RFC-7231
Hypertext Transfer Protocol (HTTP / 1.1): Semantik und Inhalt
3.1.1.5. InhaltstypEin Absender, der eine Nachricht mit einem Nutzdatenkörper
generiert, MUSS in dieser Nachricht ein Headerfeld für den Inhaltstyp generieren, es sei denn, der
beabsichtigte Medientyp der beigefügten Darstellung ist dem
Absender unbekannt .
In diesem Abschnitt wird Ihnen klar gesagt, dass Sie es weglassen sollen, wenn Sie es nicht genau wissen. Es sagt auch, dass der Empfänger annehmen könnte, dass der Typ Anwendung / Oktett-Stream ist, aber die Sache ist, dass es auch etwas anderes sein könnte.
RFC-2046
4.5.1. Octet-Stream-SubtypDie empfohlene Aktion für eine Implementierung, die eine
"application / octet-stream" -Entität empfängt , besteht darin, einfach anzubieten, die Daten
in eine Datei zu legen, wobei die Inhaltsübertragungscodierung rückgängig gemacht wird, oder sie möglicherweise
als Eingabe für eine benutzerdefinierte zu verwenden Prozess.
Und wie oben bereits erwähnt:
RFC-7231
3.1.1.5. InhaltstypWenn kein Header-Feld für den Inhaltstyp vorhanden ist, kann der Empfänger entweder einen Medientyp "Anwendung / Oktett-Stream"
([RFC2046], Abschnitt 4.5.1) annehmen oder die Daten untersuchen, um ihren Typ zu bestimmen.
Wenn Sie es als "Anwendung / Oktett-Stream" definieren, sagen Sie, dass Sie wissen, dass es "Anwendung / Oktett-Stream" ist.
Wenn Sie es nicht definieren, sagen Sie, dass Sie nicht wissen, was es ist, und überlassen die Entscheidung dem Empfänger, und der Empfänger könnte dann prüfen, ob es wie Ente läuft und ...
Ich bevorzuge application/unknown
, aber das Ergebnis wird sicherlich das gleiche sein wieapplication/octet-stream
application/octet-stream
oder bereitstellen application/unknown
? Es gibt einen Grund, warum sie erfunden haben image/png
.