Как скачать файл с другого сервера: fopen, cURL, wget » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




Как скачать файл с другого сервера: fopen, cURL, wget

Автор DimoninG, написано 01.10.2009
Рубрика на PHP  

Постовой: не знаете как сдать нулевые отчетности? Rberg поможет!

Сегодня работал с одним скриптом, граббером. Ему нужно было закачивать файлы с удаленного сайта (изображения, если точнее) и класть их в каталог у себя на сайте. Я решил сделать заметку о способах закачки файлов. Есть несколько.

Первый. С помощью fopen, fread и прочего. Выглядит обычно так:

$fp = @fopen($sourceFileName, «rb»);
$fd = @fopen($origFileName, «w»);
if ($fp && $fd) {
while (!feof($fp)) {
$st = fread($fp, 4096);
fwrite($fd, $st);
}
}
@fclose($fp);
@fclose($fd);

То есть читаем исходный файл в бинарном режиме и сразу же пишем его в свой каталог.

Второй. Через cURL. По сути это тот же способ, только с использованием cURL – подключаемся, читаем и копируем. При возможности лучше пользоваться вышеуказанным, он понятнее.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sourceFileName);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$st = curl_exec($ch);
$fd = @fopen($origFileName, «w»);
fwrite($fd, $st);
@fclose($fd);

curl_close($ch);

То есть здесь для чтения используется cURL, а для записи все тот же стандартный метод.

Третий. Почему-то никто никогда не использует команды Unix (или Windows, смотря какой сервер) для подобных операций. Причем на многих хостингах подобный подход не запрещен. Хотя, конечно, лучше было бы, если был бы свой VDS.

Все очень просто. Делаем следующее:

echo `wget http://site.ru/image.jpg`;

И всё. Картинка будет находиться в том же каталоге, откуда была вызывана команда. Можете погуглить и узнать о параметрах запуска. Не на каждом обычном хостинге получится ее применить, зато чертовски клаассно выглядит ;)

Постовой: Отличные женские стрижки по выгодным для мужей ценам ;)



Отзывов (7) на «Как скачать файл с другого сервера: fopen, cURL, wget»


ae471697

    пишет:

    Хотел бы отметить один момент. Недавно сам писал подобный скрипт, только для работы с текстом. Запускал его локально на ноутбуке дома и на работе. На работе Инет идёт через кеширующий прокси (Squid) и просто вызов fopen() и fread() не работает. Именно в этом случае помогает использование cURL (curl_setopt($curl, CURLOPT_PROXY, «xxx.xxx.xxx.xxx»);).
    Лично я скомбинировал эти 2 способа. Засунул это всё в функцию. При вызове её с определённым параметром страница читалась при помощи cURL, а если параметр не указывать – используется fread().


    пишет:

    Рекомендую использовать cURL, т.к. он знаком со всеми фишками HTTP и адекватно с ним работает. Может даже прозодить через HTTP аутентификацию. WGET – это хороший вариант, но не очень адекватный, т.к. вызывать внешнюю прогу из скрипта для начала не безопасно, а для конца – плохой тон.
    Для fopen есть неплохие оболочки, которые нормально обрабатывают HTTP. Например можно потырить исходники из RapidLeech. Код железный, работает на всех нормальных хостингах.


    пишет:

    А вот как сможно с сервера скачать сами скрипты, например исходные php?))


    пишет:

    Не используют команды linux тк
    это непереносимо и возвращает непредсказуемый результат.


    пишет:

    Мне тоже интересно, можно ли скачать какой-то пхп файл с сервера, этими командами?


    пишет:

    Можно конечно.
    Нужно знать специфические последовательности команд, дописать пару вспомогательных скриптов. Очень зависит от сервера.
    Люди обладающие подобными умениями встречаются не часто и пользуются большой популярностью, особенно у спец-служб.


    пишет:

    Что то я не разберусь как эта система работает


Оставьте свой комментарий

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->








Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.