Заголовок Content-Disposition определяет, как следует обрабатывать содержимое сообщения. Этот заголовок перешел из почтового стандарта MIME. Там этот заголовок имел отношение только к типу содержимого multipart, и описывал распределение частей содержимого. Отсюда и название Disposition. Но в протоколе HTTP он приобрел более широкие функции и сейчас это название не отражает всю полноту его функций.
Базовые функции этого заголовка описаны в документе RFC 2183. Этот заголовок имеет две директивы: inline и attachment. Однако у этого заголовка есть еще одна директива form-data. Это расширение стандарта, которое описано в документе RFC 2388.
inline
Директива inline описывает содержимое, как встроенное. Оно должно быть отображено пользователю автоматически в порядке следования частей содержимого, если этот заголовок используется в частях содержимого. Это значение является значением по умолчанию, поэтому заголовок с этим значением может отсутствовать.
Так, если передать браузеру документ того или иного типа с директивой
attachment
Директива attachment описывает соответствующее ему содержимое, как приложенное. Это содержимое не является частью сообщения и не должно отображаться автоматически. Отображение этого содержимого должно зависеть от действий пользователя. Это директива заставляет браузер, в независимости от типа содержимого, предложить пользователю открыть документ или сохранить его на диске. Таким образом, именно заголовок
Параметры этого заголовка, в сочетании со значением attachment, предоставляют дополнительные возможности.
Параметр filename позволяет задать для приложенного файла свое имя. Если этот параметр отсутствует, то файл будет именован в соответствии с именем запрошенного документа.
Параметр size сообщает о размере файла в байтах. Эта информация ни к чему не обязывает.
Параметры creation-date, modification-date, read-date сообщают соответственно о дате создания файла, дате его последнего изменения и дате его последнего чтения. К сожалению, эта информация не заставит браузер (по крайней мере самые популярные, работающие под Windows) при записи файла на диск прописать именно эти свойства файла. При записи на диск, как и обычно, будут установлены текущие даты создания, модификации и доступа.
form-data
Директива form-data является расширением стандарта и используется при отправке POST-запроса с типом содержимого multipart/form-data. О типе multipart/form-data читайте в статье метод POST
Применение .htaccess
Если на вашем сервере Apache установлен модуль mod_headers, то задачу сохранения на диске пользователя определенных файлов можно решить очень легко без использования PHP.
В этом примере для всех файлов pdf, которые лежат в том же каталоге, что и данный файл .htaccess, и ниже, будет предложен диалог с возможностью открытия или сохранения файла на диске. Регулярное выражение может быть и не таким простым. Так что выбор условия, с какими файлами отправлять этот заголовок, а с какими нет, достаточно богат.
К сожалению, следует отметить, что не многие провайдеры утруждают себя установкой этого модуля на свои серверы.
Андрей
Атрибут «download», конечно, замечательная вещь, и я не вижу причин не использовать его там, где это действительно необходимо (а браузеры, его не поддерживающие не_нужны). Но есть ряд причин не использовать его для именования скачиваемых с сервера файлов:
• Файлы получают не только браузеры. Есть wget и всякие менеджеры закачек, которые не смогут определить правильно имя файла без этого заголовка. Даже если оно задано на странице.
• Пользователь не всегда скачивает ваши файлы кликом по ссылке. Он может скопировать ссылку или добавить её в закладки, а потом перейти по ней. Разумеется, ни о каком атрибуте «download» речи здесь быть не может. Плюс ещё тысяча сценариев, по которым этот атрибут не будет действовать, даже если поддерживается браузером.
Атрибут «download» необходим в двух случаях:
1. Для генерируемых прямо на странице файлов
2. Если ваш сервер (или сервер, на котором лежит файл, который вы предлагаете пользователю скачать) не может в установку кастомных заголовков.
Михаил
Прочитал на другом сайте намного более простой способ через HTML:
<a href="URL" download="имя_файла">ссылка</a>
или просто с оригинальным именем файла
<a href="URL" download>ссылка</a>
Вообще еще не проверял, но если это работает, то это круто!
Автор
Увы, download очень новый атрибут тега A. Введен он лишь в HTML 5 и проще перечислить где он работает, нежели где он не работает. http://htmlbook.ru/html/a/download По-моему достаточно того, что он абсолютно не работает в IE, чтобы пока о нем забыть. Но на время, ибо в будущем он будет поддерживаться всеми браузерами.