Заголовок MIME - Расположение содержимого - PullRequest
2 голосов
/ 02 июня 2009

Я пытаюсь выяснить, требуется ли «Content-Disposition: attachment; filename = file_name» при отправке файла в виде вложения, и мне интересно сохранить его с исходным именем в хранилище (диске) , Похоже, что это единственный способ получить оригинальное имя файла, но RFC так грязно с ним ( ссылка на RFC ). Он использует такие слова, как «должен», а не «должен». WIKI ( ссылка на WIKI ) говорит, что это лучше, но это не RFC, который я могу передать клиенту. Идеи?

1 Ответ

2 голосов
/ 02 июня 2009

Заголовок не является обязательным, конечно, но, в том числе, это хорошая идея, если у вас есть предпочтение

  • должен ли файл показываться как встроенный или сохраняться как вложение, или
  • каким должно быть предлагаемое имя файла, если оно сохранено как вложение

Браузер или пользовательский агент не связан этим заголовком, но воспринимает его как предложение. Реальное поведение браузера может быть сложным, но, как правило, при отсутствии этого заголовка браузер выбирает соответствующий курс действий, в основном на основе своего типа Mime, и, если он является нераспознанным типом Mime, он обычно по умолчанию сохраняет его как вложение.

Использование заголовка Content-Disposition дает вам контроль в следующих случаях

  • Вы отправляете что-то, имеющее тип Mime, которое браузер получателя МОЖЕТ отображать встроенным, но вы бы предпочли этого не делать, а вместо этого предлагать его для загрузки.
  • Вы отправляете что-то, что может быть сохранено получателем на диск, и вы хотели бы указать, какое имя файла должно использоваться по умолчанию при сохранении. Без этой информации браузер, как правило, будет составлять имя файла на основе URL-адреса, которое может быть не очень разумным (например, если вы обслуживаете все из скрипта, вы не хотите, чтобы оно было именем скрипта).
...