|
|
|
| есть папка с файлами uploads/ и скрипт uploads.php:
<?
showfiles();
function showfiles() {
$files = scandir("uploads");
for($i=2; $i<count($files); $i++) {
echo " <a href='?down=".$files[$i]."'>[".$files[$i]."]</a> ";
}
}
if (@$_GET['down']) downfile($_GET['down']);
function downfile($down) {
if (file_exists("uploads/".$down)) {
header("Content-Disposition: attachment; filename=".$down);
header("Content-type: application/octet-stream; name=".$down);
header("Content-Length: ".filesize("uploads/".$down));
fpassthru($f=fopen("uploads/".$down, 'rb'));
fclose($f);
}
?>
|
Он выводит файлы директории uploads/ в ввиде ссылок. Названия ссылок - названия всех файлов директории. По нажатии на ссылку скачивается соответствующий файл. Как организовать правильное скачивание, без прямой ссылки на файл? (то есть не http://site.com/uploads/file.txt a именно http://site.com/?down=file.txt)
В моем примере скачивается не только файл, но и вся страница, с выводом файлов... Криво получается. Как сделать чтобы скачивалься ТОЛЬКО файл, такой, какой он лежит в идеале, без всяких дополнительных символов? И чтобы не общаться к другим файлам, кроме uploads.php. То есть чтобы все делал именно uploads.php, и показывал файлы, и скачивал их. | |
|
|
|
|
|
|
|
для: noob
(17.11.2007 в 12:05)
| | Ссылка http://site.com/?down=file.txt должна выводить только HTTP-заголовки и содержимое файла - больше ничего. | |
|
|
|
|
|
|
|
для: cheops
(17.11.2007 в 12:56)
| | и заголовки немного не такие
<?
if (@$_GET['down']) downfile($_GET['down']);
function showfiles() {
$files = scandir(".");
for($i=2; $i<count($files); $i++) {
echo " <a href='?down=".$files[$i]."'>[".$files[$i]."]</a> ";
}
}
function downfile($down) {
if (file_exists("./".$down)) {
header('Content-Disposition: attachment; filename="' . $down . '"');
header("Content-type: application/octet-stream");
header("Content-Length: ".filesize("./".$down));
fpassthru($f=fopen("./".$down, 'rb'));
fclose($f);
exit;
} else exit('<hr />ошибка');
}
showfiles();
?>
|
| |
|
|
|
|
|
|
|
для: exp
(17.11.2007 в 13:26)
| | Только showfiles() нужно использовать, когда не определена $_GET['down']. | |
|
|
|