Автор Тема: PHP и скачивание файлов с FTP  (Прочитано 23091 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий Попов

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 264
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.programmist.spb.ru
PHP и скачивание файлов с FTP
« Ответ #30 : 15 Августа 2002, 03:27:38 »
ThE0ReTiC
Это... ошибся, не ту функцию дал (извуняюсь... с кем не бывает). Конечно я имел ввиду readfile...

Доктор
Это уже другой вопрос...

Можно делать хитро (как opensource.net, правда они с другой целью) - ставить сессию, где человек выбирает какой-то бред, и начинается сессия... Пока человек выбирает, файл начинает скачиваться... Когда выбрал - надпись
"Вы должны подождать 10 минут. Это сделано с целью..." а дальше впаривать доверчивого юзера...:-D

Кто обяъснит Гелиосу как это делать? :-)))

Helios
То, что я написал выше - шутка, конечно... А над словами Доктора задумайтесь...
 За Родину! За Россию!
SendMail для любого хостинга.

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #31 : 15 Августа 2002, 15:09:55 »
Я думаю, если файл будет 5, 10, а то 100МБ (точнее 103МБ) десятью минутами дело не ограничется...

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #32 : 15 Августа 2002, 15:25:48 »
Похоже придется давать ссылку посетителям сайта вместе с логином и паролем, надеясь на их порядочность...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #33 : 15 Августа 2002, 15:30:43 »
А анонимный доступ организовать не проще?
AS IS...

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #34 : 15 Августа 2002, 15:42:45 »
ThE0ReTiC
Один знакомый попросил своего знакомого, работающего в известной хостинг компании, организовать по дружбе неограниченное пространство. Он организовал неограниченное простарнство, однако, чтобы не получить себе проблемы, он смог организовать только парольный доступ. По его словам все бы сразу обнаружили "левый" ftp доступ.

Вот такая грустная история...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #35 : 15 Августа 2002, 15:45:44 »
Helios
Конечно обнаружили бы...
Warez?
AS IS...

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #36 : 15 Августа 2002, 16:02:58 »
Ладно, поприкалывались, и хватит.
Смотрим мануал:

Цитировать

int fopen (string filename, string mode [, int use_include_path])

If filename begins with "ftp://" (not case sensitive), an ftp connection to the specified server is opened and a pointer to the requested file is returned. If the server does not support passive mode ftp, this will fail. You can open files for either reading or writing via ftp (but not both simultaneously).


Скрипт get_ftp_file.php.   Как параметр для вызова filename (т.е. ссылка прописывается так: скачать картиночки ;))

Пишем такой код для этого файла:


<?php
$f
=fopen("ftp://$ftp_username:$ftp_password@needed.domen.com/path/$filename""r");

if (! 
$f) {
  echo 
"Incorrect file name or server does not support passive mode ftp";
  exit;
  }


// Тип файла $content_type в общем случае нужно
// определить либо из расширения запрашеваемого
// файла $filename, либо по таблице соответствия,
// которую составить, включив в нее всенаши файлы,
// доступные для скачивания
// Пока так: 

$content_type="application/zip";
header("Content-Type: $content_type");


// Content-Length я вообще не уверен, что надо
// обязательно выдавать, а проверять влом, но,
// если выдавать, то тут тоже есть 2 пути:
// 1. Тоже таблица, составленная для всех наших файлов.
// 2. Лучшие и универсальнее узнать с помощью ftp_size
// (перед которой, естесственно ftp_connect, и ftp_quit после) 
// Пока так, как будто знаем:
$content_length=26454;
header("Content-Length: $content_length");

set_time_limit (0);

while (!
feof ($f)) {
    
$buffer fread($f4096);
    echo 
$buffer;
    
flush();
    }


fclose($f);
?>


Теоретически должно работать.

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #37 : 15 Августа 2002, 19:12:43 »
ThE0ReTiC
Да никакой не Warez. Просто видеоклипы и mp3 нескольких групп.

Доктор
Ты гений! ВСЕ ЗАРАБОТАЛО! Огромное тебе спасибо! На странице, с этими ссылками у себя на сайте повешу тебе благодарность!
Однако все-же есть две мелочи:
1) Нельзя ли как нибудь сделать, что-бы Download\'ер (GetRight в моем случае) сразу в качестве имени сохраняемого файла ставил реальное имя файла, а не имя и расширение скрипта.
2 (Крупная мелочь)) Нельзя ли как-нибудь сделать возможной докачку файлов? (Все же как-то не очень удобно за один раз скачать 10 -12 МБ)

И еще:
А где можно узнать, какому расширению соответствует какой Content-Type?

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #38 : 15 Августа 2002, 20:14:02 »
1) Попробуй выдать такие заголовки:
Там, где Content-Type, добавить имя файла через точку с запятой, хотя не знаю обязательно ли, а экспериментировать самому лень:
header("Content-Type: $content_type;name=$filename");

А также еще один заголовок:
header("Content-Disposition: attachment; filename=$filename");

Не уверен, обязательно ли слово attachment, может быть можно просто:
header("Content-Disposition: filename=$filename");

Причем опять же, может быть, что достаточно одного из этих заголовков, надо бы было просто поэкспериментировать с разными браузерами и качалками.

2) Дозакачка вообще сложный вопрос. Как я понимаю, специально для этого придуман заголовок Content-Range:
header("Content-Range: $start-$end/$size");
Интересно, как узнать от клиента этот $start...
То-есть, может быть, что-то и можно было бы придумать, но сильно геморно... А ведь некоторые качалки еще по частям качают...
Не стоит мучаться.

3) MIME-типы можно посмотреть, например, у Апача в файле mime.types

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #39 : 15 Августа 2002, 21:42:05 »
Доктор
А нет ли где-нибудь подробного описания всех существующих "заголовков"?

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #40 : 15 Августа 2002, 21:44:42 »
Доктор
А что означает переменная $end в заголовке Content-Range.

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #41 : 15 Августа 2002, 23:16:29 »
Описания всех существующих заголовков у меня нет.

$start и $end - по идее номера первого и последнего байтов текущего куска относительно всего файла.

Оффлайн Helios

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moderntalking.org
PHP и скачивание файлов с FTP
« Ответ #42 : 15 Августа 2002, 23:50:43 »
То есть $start всегда равна 1 (единице), а $end равна размеру скаченного пользователем куска?

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #43 : 16 Августа 2002, 00:34:14 »
Нет, по идее $start=размер_скачанного_ранее_куска+1, а $end=размер_текущего_куска.

А вообще я ж говорю: забудь и не заморачивайся.
С именем получилось хоть?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
PHP и скачивание файлов с FTP
« Ответ #44 : 16 Августа 2002, 00:39:15 »
Helios
Есть конечно.
Поищи в RFC архивах
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28