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

Форум PHP

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

 

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

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

тема: Как устроена кнопка "скачать"? Какой протокол используется?
 
 автор: Eugene77   (27.04.2007 в 07:20)   письмо автору
 
 

Как кнопку "скачать" делают грамотно? Если привешу на неё ftp, не погонят ли меня с хостинга?
Может у кого готовый скриптик завалялся?
А может кто умеет разбивать качаемый файл на потоки?
Словом, поделитесь опытом!

   
 
 автор: FroNiTy   (27.04.2007 в 07:39)   письмо автору
 
   для: Eugene77   (27.04.2007 в 07:20)
 

Ну самый простейший вариант это:

<?php
$file 
'path/to/file.txt';
header("Content-Disposition: attachment; filename=\"$file\""); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents ("GET \"$file\"");
?>

отдает по http протаколу... Можно еще использовать сокеты...

   
 
 автор: Trianon   (27.04.2007 в 09:46)   письмо автору
 
   для: FroNiTy   (27.04.2007 в 07:39)
 

Неверно. Во всех строках.
Путей в заголовках быть не должно.
параметром file_get_contents является имя файла, а не команда.
file_get_contents гробит память
<?php 
$path 
'path/to/'$file 'file.txt'

header("Content-Disposition: attachment; filename=\"$file\"");  
header("Content-Type: application/octet-stream; name=\"$file\"");  
header("Content-Length: ".filesize($path.$file));  

fpassthru($f=fopen($path.$file'rb')); 
fclose($f);

?> 

   
 
 автор: Loki   (27.04.2007 в 10:13)   письмо автору
 
   для: Trianon   (27.04.2007 в 09:46)
 

А чем обусловлено использование fpassthru, а не readfile?

   
 
 автор: Trianon   (27.04.2007 в 10:27)   письмо автору
 
   для: Loki   (27.04.2007 в 10:13)
 

привычкой.
С fpassthru можно указать начальную точку передачи, если нужно ответить на открытый диапазонный запрос (Accept-Ranges). Такой запрос практически всегда возникает при попытке докачать начавшийся загружаться файл.

   
 
 автор: Eugene77   (27.04.2007 в 21:52)   письмо автору
 
   для: Trianon   (27.04.2007 в 09:46)
 

А если в директорию, с файлом ещё и htaccess положить, то передаст?
И ещё синтаксис меня запутал: зачем в хедерах после переменной file обратная черта и кавычки?
Этот код, как я понял, предполагается в виде отдельного файла оформить и гиперссылку на него с кнопки направить. А мне хотелось, чтобы это как функция работала, вызванная onClick, а гиперссылка с кнопки на другую страничку вела. Можно так? То есть, чтобы следующая страничка грузилась параллельно с октетным потоком.

   
 
 автор: Trianon   (28.04.2007 в 09:36)   письмо автору
 
   для: Eugene77   (27.04.2007 в 21:52)
 

>А если в директорию, с файлом ещё и htaccess положить, то передаст?
Он никак не повлияет. Ну разве что позволит загрузить еще и htaccess, если Вам вдруг придет в голову такая мысль.

>И ещё синтаксис меня запутал: зачем в хедерах после переменной file обратная черта и кавычки?

Напишите окончательную строку, которую Вы хотите передать, как поле заголовка.

>Этот код, как я понял, предполагается в виде отдельного файла оформить и гиперссылку на него с кнопки направить. А мне хотелось, чтобы это как функция работала, вызванная onClick, а гиперссылка с кнопки на другую страничку вела. Можно так? То есть, чтобы следующая страничка грузилась параллельно с октетным потоком.

Вы начали путать клиентскую и серверную часть. фтопку.

   
 
 автор: FroNiTy   (27.04.2007 в 18:06)   письмо автору
 
   для: FroNiTy   (27.04.2007 в 07:39)
 

Удалите мой пост)) хоть работает, но ерись... в 6 утра писал неглядя

   
 
 автор: Unkind   (27.04.2007 в 19:49)   письмо автору
 
   для: FroNiTy   (27.04.2007 в 18:06)
 

хоть работает, но ерись
Да в том-то и дело, что работать не будет.

   
Rambler's Top100
вверх

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