Нет.
Тип контента должен быть таким, каким он известен, если вы это знаете. application/octet-stream
определяется как «произвольные двоичные данные» в RFC 2046, и здесь есть определенное совпадение того, что они подходят для сущностей, единственной целью которых является сохранение на диск, и с этого момента они должны находиться вне чего-либо «webby». Или посмотреть на это с другой стороны; единственное, что можно безопасно сделать с помощью application / octet-stream, - это сохранить его в файл и надеяться, что кто-то еще знает, для чего он нужен.
Вы можете комбинировать использование Content-Disposition
с другими типами контента, такими как image/png
или даже, text/html
чтобы указать, что вы хотите сохранить, а не отобразить. Раньше было так, что некоторые браузеры игнорировали бы это в случае, text/html
но я думаю, что это было довольно давно в этот момент (и я скоро ложусь спать, поэтому я не собираюсь начинать тестировать целую кучу браузеры прямо сейчас, может быть позже).
RFC 2616 также упоминает о возможности маркеров расширения, и в настоящее время большинство браузеров признают, inline
что вы хотите, чтобы сущность отображалась, если это возможно (то есть, если это тип, который браузер знает, как отображать, в противном случае у него нет выбора). , Это, конечно, поведение по умолчанию в любом случае, но это означает, что вы можете включить filename
часть заголовка, которую будут использовать браузеры (возможно, с некоторой настройкой, чтобы расширения файлов соответствовали локальным системным нормам для рассматриваемого типа контента, возможно, нет) в качестве предложения, если пользователь пытается сохранить.
Следовательно:
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="picture.png"
Означает «Я не знаю, что это за чертовщина. Пожалуйста, сохраните его как файл, желательно с именем picture.png».
Content-Type: image/png
Content-Disposition: attachment; filename="picture.png"
Означает «Это изображение в формате PNG. Пожалуйста, сохраните его как файл, желательно с именем picture.png».
Content-Type: image/png
Content-Disposition: inline; filename="picture.png"
Означает «Это изображение в формате PNG. Пожалуйста, покажите его, если вы не знаете, как отображать изображения в формате PNG. В противном случае, или если пользователь решит сохранить его, мы рекомендуем имя picture.png для файла, в котором вы сохраняете его как».
Из тех браузеров, которые распознают inline
некоторые, всегда будут использовать его, в то время как другие будут использовать его, если пользователь выбрал «сохранить ссылку как», но не если он выбрал «сохранить» во время просмотра (или, по крайней мере, раньше IE был таким, возможно, изменился несколько лет назад).
attachment
могут быть считается "лучше не показывать это самому",inline
а "лучше всего показывать это самому, если можете". В любом случае, большинство браузеров будут использовать значение имени файла в качестве рекомендуемого имени файла, но пользователи всегда могут переопределить это.