Предположим, у нас есть скрипт givefile.php
. Допустим, мы откуда-то уже взяли содержимое файла и хотим отдать его под именем somefile.txt
:
<?php
$body = 'Это содержимое файла';
header("Content-type: application/octet-stream"); // этот заголовок нужен,
// чтобы браузер сразу предложил сохранить файл на диск
header("Content-disposition: filename=somefile.txt"); // а в этом заголовке передается имя файла
echo $body; // ну а тут выводим его содержимое
Теперь, чтобы получить файл, нужно открыть givefile.php
через браузер.
Примечание: некоторые символы в имени файла могут немного "поломать" заголовок (например, "
и ,
) и имя файла отдастся не полностью. Пока не бери в голову, это на случай, если при отдаче имя необъяснимым образом обрежется. Англоязычное обсуждение есть на stackoverflow.com (№ 93551), оставлю ссылку тут, если эту проблему все-таки придется решать.