Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не работает закачка файлов CURL


Автор: kshyms 26.11.2009, 08:04
Код

$message=$f[url];
$url1 = $f[url];
 $url1 = trim($url1 , " http://"); // Лишь несколько слов

$ch = curl_init("$message");
$handle = fopen("$url1.html", "wb");
curl_setopt($ch, CURLOPT_FILE, $handle);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = CURLOPT_RETURNTRANSFER($ch);

Не работает закачка файлов CURL, а почему?

Автор: Pitlord 26.11.2009, 18:04
Код хоть и маленький, но очень страшный. Попробуй сначала изучить то, что ты в него напихал. Что делает trim(), что во втором аргументе fopen() передают, какой формат формирования запроса cURL'ом в PHP.

Автор: kshyms 27.11.2009, 16:16
Цитата

Что делает trim()
 Вырезает лишнее

Добавлено через 7 минут и 31 секунду
curl_exec($ch)-загрузка страницы и выдача её браузеру
fopen() - открывает файл
CURLOPT_RETURNTRANSFER-запись
curl_exec($ch)-загрузка страницы и выдача её браузеру


Автор: NewDima 27.11.2009, 17:59
kshyms, давно такого быдло-кода не видел, даже у своих одногруппников.
Читайте внимательно документацию по функциям, которые используете
thttp://www.php.net/manual/en/function.trim.php
http://www.php.net/manual/en/function.curl-setopt.php
Обратите внимание на отсутствие функции CURLOPT_RETURNTRANSFER() потому что это не функция

Автор: Pitlord 27.11.2009, 18:43
kshyms, мне это неинтересно. Ты для себя уясни что ты используешь, ты не экзамен сдаёшь.

Автор: kshyms 28.11.2009, 06:14
Код


$f[url]="http://forum.vingrad.ru";
$message=$f[url];
$url1 = $f[url];
$ch = curl_init("$message"); //
$handle = fopen("$url1.html", "w+");//открываем папку 
curl_setopt($ch, CURLOPT_FILE, $handle);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = CURLOPT_RETURNTRANSFER($ch);
curl_close($ch);

и так тоже пробовал пока не получается


Автор: NewDima 28.11.2009, 06:20
Если я говорю обратить внимание, это не значит, что нужно удалить бездумно. Для того, чтобы curl вернул результат, нужно установить флаг CURLOPT_RETURNTRANSFER функцией curl_setopt. Повторюсь еще раз, если функция trim делает то, что вам нужно, это не значит, что вы правильно ей пользуетесь, прочитайте доку, или же совсем лень?

Автор: kshyms 29.11.2009, 06:31
Код

$f[url]="http://forum.vingrad.ru";
$message=$f[url];
$url1 = $f[url];
$str = substr("$url1", 7); //а может вместо trim применить
$str .= "html";
$ch = curl_init("$message"); //
$handle = fopen("$str ", "r+");//открываем папку
curl_setopt($ch, CURLOPT_FILE, $handle);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = CURLOPT_RETURNTRANSFER($ch);
curl_close($ch);

А может так?

Автор: kshyms 29.11.2009, 06:52
Код

$f[url]="http://forum.vingrad.ru";
$message=$f[url];
$url1 = $f[url];
$str = $url1;
$str = substr("$str", 7); //а может вместо trim применить
$str .= "html";
$ch = curl_init("$url1"); //
$handle = fopen("$str ", "r+");//открываем папку
curl_setopt($ch, CURLOPT_FILE, $handle);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = CURLOPT_RETURNTRANSFER($ch);
curl_close($ch);

Автор: NewDima 29.11.2009, 07:37
Цитата(NewDima @ 28.11.2009,  13:20)
Для того, чтобы curl вернул результат, нужно установить флаг CURLOPT_RETURNTRANSFER функцией curl_setopt.

Неужели это не ясно?
Код

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);


Добавлено через 59 секунд
kshyms, и прочитайте, что выводит интерпритатор в ответ на такой код. Найдеюсь, поймете

Автор: kshyms 29.11.2009, 11:08
Вы имеете ввиду curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);


http://www.php.net/manual/en/function.curl-exec.php

Код

$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://example.com');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

// display file
echo $file_contents;


А может взять за основу это?

Автор: Pitlord 29.11.2009, 12:56
kshyms, ты принципиально не хочешь разбираться в том, что копируешь?

Автор: NewDima 29.11.2009, 13:00
kshyms, да! Я об этом три раза сказал, вообще-то

Автор: kshyms 5.12.2009, 09:20

Эксперимент еще не закончен.
Код

<?PHP
$f[url]="http://forum.vingrad.ru";
$message=$f[url];
$url1 = $f[url];
$str = $url1;
$str = substr("$str", 7); //а может вместо trim применить
$str .= ".html";
$ch = curl_init("$url1"); //
$handle = fopen("$str ", "r+");//открываем папку
curl_setopt  ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch); // выполняем запрос curl
curl_close($ch);
?>

Флаг - это объявленная константа. Если побитовая передача потока тогда нужно установить константу куда качать, а 1 означает по 1 биту, то есть знаку.
А может так?

Автор: kshyms 5.12.2009, 12:45
Код

$f[url]='http://forum.vingrad.ru';
$url1 = $f[url];
$str = $url1;
$str = substr("$str", 7); //а может вместо trim применить
$str .= ".html";
$ch = curl_init("$url1"); //
//$handle = fopen("$str ", "r+");//открываем папку
curl_setopt  ($ch, CURLOPT_HEADER, true);
curl_exec($ch); // выполняем запрос curl
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_close($ch);

http://kshyms.com/wfsearch.08/curl20.php

Все работает и закачивает!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)