Основы протокола HTTP: скачивание файлов с нужным именем

Как загружать файлы через PHP-скрипт с произвольным именем, а не с именем этого скрипта?

Как загружать файлы через PHP-скрипт с произвольным именем, а не с именем этого скрипта? При помощи PHP можно читать файлы и скачивать их через браузер, но при сохранении этого файла браузер сохранит его под именем скрипта. Например, файл download.php будет выдавать PDF-файл, но браузер всё равно сохранит его под именем download.php и правильно сделает, потому что отправляется не сам файл, а его содержимое, прочитанное скриптом. Вот пример такого скрипта:

Выхода у нас два: или делаем перенаправление или посылаем файл как вложение. Первый способ простой: вызываем функцию header("Location: /files/original.pdf"); скрипт завершается, а браузер начинает скачивание указанного файла. Способ второй: используем дополнительные заголовки HTTP-ответа, чтобы браузер принял не просто данные, а как вложение (аналогия с вложениями в электронных письмах).

При выполнении этого скрипта браузер предложит скачать и сохранить файл downloaded.pdf независимо от имени скрипта. Скрипт может называться как угодно. Уже в который раз напоминаю, что HTTP-заголовки в функции header() должны быть отправлены до начала отправки непосредственно данных, будьте внимательны.

Комментарии (1)
  • Александр Вторник 20 Ноябрь 2012
    Интересно, спасибо
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила

Рейтинг@Mail.ru