Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как организовать скачку файла
 
 автор: noob   (17.11.2007 в 12:05)   письмо автору
 
 

есть папка с файлами 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, и показывал файлы, и скачивал их.

   
 
 автор: cheops   (17.11.2007 в 12:56)   письмо автору
 
   для: noob   (17.11.2007 в 12:05)
 

Ссылка http://site.com/?down=file.txt должна выводить только HTTP-заголовки и содержимое файла - больше ничего.

   
 
 автор: exp   (17.11.2007 в 13:26)   письмо автору
 
   для: 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(); 
?>

   
 
 автор: kasmanaft   (17.11.2007 в 15:24)   письмо автору
 
   для: exp   (17.11.2007 в 13:26)
 

Только showfiles() нужно использовать, когда не определена $_GET['down'].

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования