Forum Webscript.Ru
Программирование => PHP => Тема начата: RelaX от 21 Марта 2002, 19:48:30
-
мне надо сделать скрипт, который выполняет следующее:
я указываю URL нужного мне файла, а скрипт потом скачивает этот файл в указанную директорию сервера, на котором располается данных скрипт....
возможно ли такое?
-
Да возможно:
$fp = fopen ("/home/rasmus/file.txt", "r");
$fp = fopen ("/home/rasmus/file.gif", "wb");
$fp = fopen ("http://www.php.net/", "r");
$fp = fopen ("ftp://user:password@example.com/", "w");
-
http://php.spb.ru/php/download_file.html
-
Dm
это работает только на одном сервере, с другого сервера нияего не качает :(
-
Может хостинг бесплатный ? => исходящие соединения прикрыты...
-
Lion
Логично :)
-
Lion
нет, хостинг платный....
-
нет, хостинг платный....
Кто конкретно ?
-
Lion
http://www.ur.ru (лучший хостинг в Уральском Регионе), траффик с этого сервера считается как городской (т.е. меньше всего надо будет платить за "выкачанный" файл :) )
-
пишет такую ошибку:
Warning: Supplied argument is not a valid File-Handle resource in /usr/var/spool/web/aderus/site/www/2/1.php on line 10
сам скрипт выглядит так (на сервереве veer.net-burg.net все работает нормально):
// открыли соединение
$so = fsockopen("veer.net-burg.net", 80, &$errno, &$errstr, 30);
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,"GET /1/notepad.exe HTTP/1.0\\nHOST: veer.net-burg.net\\n\\n");
// читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\\r\\n" && !feof($so));
unset($buf);
// читаем документ в переменную
while(!feof($so)) $buf.=fread($so,2048);
// Готово. В переменной $buf храниться скаченный документ (т.е. файл)
// Максимум можно читать порциями по 64K-1байт
// закрываем сокет
fclose($so);
echo "Download fine, size ".strlen($buf)." bytes."; flush();
// используем скаченный файл (в переменной) по назначению...
$f=fopen("download.tmp","wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);
?>
-
это работает только на одном сервере, с другого сервера ничего не качает
чем отличаются серверы?
-
Здравствуйте!
Попробовал поюзать скрипт. Вроде бы как работает, а вродеб и нет.
Выдаёт сообщение об ошибке
Notice: Undefined variable: buf in z:\\home\\cjs.ru\\www\\upload.phtml on line 14
Download fine, size 5320099 bytes.
При этом в корне где лежит файл закачки, туда падает и файл download.tmp
Размер соответствует оригиналу, который закачивался.
Имя и расширение меняю на оригинальное (вручную) и файл удобоваримый, распаковывается нормально (оригинал - архив).
Далее не могу разобраться:
Почему скрипт выдаёт "Неопределенная переменная", если временный файл рисуется ?
line 14 ----- while(!feof($so)) $buf.=fread($so,2048);
Почему скрипт не создаёт файл с оригинальным именем?
скрипт запускаю через IE. Полностью листинг файла скрипта:
// открыли соединение
$so = fsockopen("pirk.ru", 80, &$errno, &$errstr, 30);
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,"GET /www1.rar HTTP/1.0\\nHOST: pirk.ru\\n\\n");
// читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\\r\\n" && !feof($so));
unset($buf);
// читаем документ в переменную
while(!feof($so)) $buf.=fread($so,2048);
// Готово. В переменной $buf храниться скаченный документ (т.е. файл)
// Максимум можно читать порциями по 64K-1байт
// закрываем сокет
fclose($so);
echo "Download fine, size ".strlen($buf)." bytes."; flush();
// используем скаченный файл (в переменной) по назначению...
$f=fopen("download.tmp","wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);
?>
Спасибо!
-
Если я правильно понимаю, строка 14 выдаёт ошибку, потому как цикл начинается, а используется, прибавляется к переменной $buf , которая ранее не была инициализирована.
С этим разобрался. Добавил перед циклом строчку $buf = "";
С download.tmp вродеб тоже всё ясно.
Сейчас в другое упёрся.
1. Запускаю ест через IE. При запуске переодически выкидывает сообщение типа: "не удалось открыть узел http://cjs.ru/upload.phtml" , ну т.е. урл скрипта. Обычно при объёме файла более 5Мб. А мне надо полсотни Мб!. В чём причина не понятна?
Или другой вариант.
2. Браузер выдаёт превышен 30 секундный таймаут (не знаю где это рулить).
Подсобите, плз.
Спасибо.
-
1) А нече что есть предел для темп фаилов?
upload_max_filesize этот параметр проверь! phpinfo()
2) set_time_limit()
-
Так, спасиб, начинаю догонять.
По 2) куда в скрипте это поставить. Или что то не то леплю :)
-
Вначало конечно!
-
Спасиб!!!
Такс, сделал в начале скрипа
set_time_limit(0)
Работает машинка:)
Но файлы тяжелее 25М не тянет! :(
Посмотрел, стоит лимит
upload_max_filesize 20М
Отписал в суппорт хостинга, чтоб разжали. Молчат как рыба об лёд. Ну раз молчат больше 12 часов, значит незя. Можно конечно хостера поменять и найти у кого лимит этот не задавлен, но переезчать ИМНО геморно :(
Может можно эту хрень (с лимитом размера файла) как то объехать?
-
По частям файл качать
-
Mog.:
По частям файл качать
Хорошая мысль. У меня она тоже возникала. Только как это сделать, покрошить исходный файл, который метров 120-150. На исходный сервак (где файл(ы) лежит) у меня доступа нет и соответственно там делить на части ничего не могу. Как быть?
ээ, а может я не правильно думаю, не стого конца?
-
Dim:
покрошить исходный файл
Отнюдь!
Проги, которые файлы качают с Инета не крошат ничего на серваках с которых скачивают и тем не менее умудряются файл по частям скачивать. Опять же докачка файла после перерыва вполне возможное дело. Если сервер позволяет.
Этот вопрос обсуждали и помнится не очень давно, поройся поиском по форуму.