Nein.
Der Inhaltstyp sollte so sein, wie er bekannt ist, wenn Sie ihn kennen. application/octet-stream
wird in RFC 2046 als "willkürliche Binärdaten" definiert, und es gibt hier eine eindeutige Überlappung, die für Entitäten geeignet ist, deren einziger Verwendungszweck darin besteht, auf der Festplatte gespeichert zu werden, und von diesem Punkt an außerhalb von "webby" zu sein. Oder um es aus einer anderen Richtung zu betrachten; Das einzige, was man mit application / octet-stream sicher machen kann, ist, es in einer Datei zu speichern und zu hoffen, dass jemand anderes weiß, wofür es ist.
Sie können die Verwendung von Content-Disposition
mit anderen Inhaltstypen kombinieren , z. B. image/png
oder sogar, text/html
um anzuzeigen, dass Sie speichern und nicht anzeigen möchten. Früher war es so, dass einige Browser dies ignorierten, text/html
aber ich denke, dass dies zu diesem Zeitpunkt schon lange her ist (und ich gehe bald ins Bett, damit ich nicht anfange, eine ganze Reihe von Tests durchzuführen Browser jetzt; vielleicht später).
RFC 2616 erwähnt auch die Möglichkeit von Erweiterungstoken, und heutzutage erkennen die meisten Browser, inline
dass die Entität nach Möglichkeit angezeigt werden soll (dh wenn es sich um einen Typ handelt, den der Browser anzeigen kann, hat er sonst keine Wahl). . Dies ist natürlich sowieso das Standardverhalten, aber es bedeutet, dass Sie den filename
Teil des Headers einschließen können , den die Browser verwenden (möglicherweise mit einigen Anpassungen, damit Dateierweiterungen den lokalen Systemnormen für den betreffenden Inhaltstyp entsprechen, möglicherweise nicht). als Vorschlag, wenn der Benutzer versucht zu speichern.
Daher:
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="picture.png"
Bedeutet "Ich weiß nicht, was zum Teufel das ist. Bitte speichern Sie es als Datei, vorzugsweise mit dem Namen picture.png".
Content-Type: image/png
Content-Disposition: attachment; filename="picture.png"
Bedeutet "Dies ist ein PNG-Bild. Bitte speichern Sie es als Datei mit dem Namen picture.png".
Content-Type: image/png
Content-Disposition: inline; filename="picture.png"
Bedeutet "Dies ist ein PNG-Bild. Bitte zeigen Sie es an, es sei denn, Sie wissen nicht, wie PNG-Bilder angezeigt werden sollen. Andernfalls oder wenn der Benutzer es speichern möchte, empfehlen wir den Namen picture.png für die Datei, unter der Sie es speichern."
Von den Browsern, die inline
einige erkennen, wird es immer verwendet, während andere es verwenden, wenn der Benutzer "Link speichern unter" ausgewählt hat, aber nicht, wenn er beim Anzeigen "Speichern" ausgewählt hat (oder zumindest der IE war früher so) möglicherweise vor einigen Jahren geändert).
attachment
könnte gilt als "am besten, dies nicht selbst anzuzeigen" undinline
als "am besten, dies selbst anzuzeigen, wenn Sie können". In beiden Fällen verwenden die meisten Browser den Dateinamen als vorgeschlagenen Namen der Datei, aber Benutzer können diesen jederzeit überschreiben.