вторник, 24 июля 2012 г.

PHP - скачивание файлов (а не открытие)

Поговорим о скачивании файлов. Думаю тема давно заезженная, но все же черкну пару строк.
К примеру, если оставить прямую ссылку на pgf файл, типа:
<a href='files/price1.pdf'>скачать</a>
то в современных браузерах файл сразу же в нем и откроется. В случаях, когда необходимо не открывать файл а качать - Content-type и Content-Disposition вам в помощь. Вот пример кода, для закачки файла, а не открытия:
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"files/price1.pdf\"");
$x = fread(fopen("files/price1.pdf", "rb"), filesize("files/price1.pdf"));
echo $x;

Создаем пхп файл download.php и заливаем эти строки в него (предварительно, сомособой, изменив их).

Для множества файлов добавляем $_GET переменную id, вытаскиваем по ней название файла из БД и отправляем на загрузку.

Указание media-типа используется для передачи сведений о формате содержимого в HTTP-транзакциях. Клиенты используют media-типы в своих заголовках Accept для того, чтобы сообщить, в каких форматах они предпочитают принимать данные. Серверы используют media-типы в заголовках Content-Type, чтобы сообщить клиенту о том, в каком формате передается прилагаемое содержимое: то ли это HTML, который нужно форматировать, то ли это GIF или JPEG, требующий визуализации, то ли это данные в формате PDP, для которого нужно открывать внешнюю программу просмотра или использовать дополнительное приложение.

Список всех media-типов

1 комментарий: