Реклама на сайте Advertise with us

Скачать файл средствами пхп

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 12:17       Ответить с цитатойцитата 

Собственно хотел уточнить, у меня есть список файлов, которые находятся на удаленном сервере, мне нужно их перетянуть к себе на комп.
Это можно сделать функцией сору( ) или это только ей и делается???

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 12:24       Ответить с цитатойцитата 

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

7
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 12:29       Ответить с цитатойцитата 

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

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/11/11 в 12:36       Ответить с цитатойцитата 

как-то так trollface.png
Код:
$content = file_get_contents('http://master-x.com/img/1.jpg');
file_put_contents('img/html1.jpg', $content);

6
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 12:50       Ответить с цитатойцитата 

ibiz писал:
как-то так trollface.png
Код:
$content = file_get_contents('http://master-x.com/img/1.jpg');
file_put_contents('img/html1.jpg', $content);

я тоже сразу про file_get/put_contents подумал, но почитал мануал по copy, и собственно оно то же самое делает оказывается icon_smile.gif
хз как внутри копи работает, но возможно не держит весь файл в памяти в отличие от file_get_contents, надо будет как-нибудь самому воспользоваться.

7
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 12:59       Ответить с цитатойцитата 

наткнуля на то что не рекомендуют file_get_contents()
читать тут

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/11/11 в 13:06       Ответить с цитатойцитата 

Lexikon писал:
наткнуля на то что не рекомендуют file_get_contents()
читать тут


не загружается ссылка, гугель выдал вот что:
Цитата:

Почему нельзя использовать fopen, file_get_contents при работе с HTTP
Как мы знаем, fopen, file, file_get_contents могут принимать в качестве параметра URL удаленного файла. НО использование этих функций не правильно, и вот почему:

1. Эти функции работают с удаленными хостами толдько при включенной директиве allow_url_fopen в php.ini (установить эту директиву в .htaccess или скрипте нельзя). Как правило хостеры ее отключают. По крайней мере умные.
2. fopen не имеет параметра тайм-аута, что самое важное,т.к. в случае если сайт не отвечает или тяжело отвечает, скрипт может легко "подвиснуть".
3. Если где-то используется fopen и случайно пропущена обработка возможности ошибочного входного параметра, то может быть XSS или переполнения буфера.
4. Нет возможности указать порт, по которому необходимо соединиться с сервером.
5. Лишние операции, т.к. тот же fopen вызывать будет сокеты. Зачем использовать сверх функции?

Что же использовать?

http://php.net/fsockopen
http://php.net/sockets


по всем пунктам для file_get_contents нашел только allow_url_fopen в php.ini
если уж совсем хочется, правильно-правильно сделать, то юзай curl trollface.png

6
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 13:15       Ответить с цитатойцитата 

Lexikon писал:
наткнуля на то что не рекомендуют file_get_contents()
читать тут

бред теоретиков, не читай такое smail101.gif
особенно умилило
Цитата:
5. Лишние операции, т.к. тот же fopen вызывать будет сокеты. Зачем использовать сверх функции?

ответ: потому что работа с сокетами требует 10 строк кода а file_get_contents - одну.

единственное толковое замечание про таймауты, но насколько я помню из опыта, они так же глючат и при работе с сокетами.
так что совсем правильно как заметил ibiz будет юзать curl.
но не надо стрелять из пушки по воробьям.

6
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/11/11 в 13:26       Ответить с цитатойцитата 

grozny писал:

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


вообщето file_get_contents поддерживает таймауты, про глюки это отдельная тема trollface.png

Код:
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )


Код:

$ctx = stream_context_create(array(
     'http' => array(
         'timeout' => 1
         )
     )
);
file_get_contents("http://example.com/", 0, $ctx);

6
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 13:28       Ответить с цитатойцитата 

ibiz писал:
вообщето file_get_contents поддерживает таймауты, про глюки это отдельная тема trollface.png

и правда... я просто на них забил т.к. они у меня ни разу не работали icon_smile.gif
пробую с периодичностью раз в 3 года smail101.gif

6
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 13:38       Ответить с цитатойцитата 

ясненько, мне собственно не на сервер ставить, а у себя на локалке работать чтоб облегчить некоторые замарочки.

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 06/11/11 в 13:42       Ответить с цитатойцитата 

не придумывай лишнего. возьми Zend_Http

Zend_Loader::loadClass('Zend_Http_Client');

public function download_upload($url) {
$client = new Zend_Http_Client();
$client->setConfig($GLOBALS['proxy_setting']);
$client->setHeaders($GLOBALS['headers_setting']);
$client->setCookieJar();
try {
$client->setUri($url);
$response = $client->request();
} catch (Zend_Uri_Exception $exc) {
echo $exc->getMessage();
return;
} catch (Exception $exc) {
echo $exc->getMessage();
return;
}
$img_src = $response->getBody();

if(
$response->isSuccessful()
AND
preg_match("~image~is", $response->getHeader('Content-Type')) == 1
) {
$imagetype = $response->getHeader('Content-Type');
preg_match("~.*/(.*)~is", $imagetype, $type);
$filename = md5(uniqid('', TRUE)) . '.' . $type[1];
file_put_contents($filename, $img_src, FILE_USE_INCLUDE_PATH);
}
}

ну тут я с картинками работал. поправишь как тебе надо. глобальные массивы сделаешь локальными. они такого плана

$headers_setting = array(
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' => 'gzip,deflate',
'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
);

$proxy_setting = array(
'useragent' => 'any random',
'keepalive' => TRUE,
'strictredirects' => TRUE,
'timeout' => 600,
'sslusecontext' => TRUE,
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(
#CURLOPT_PROXY => '127.0.0.1',
#CURLOPT_PROXYPORT => 9050,
#CURLOPT_HTTPPROXYTUNNEL => TRUE,
#CURLOPT_SSL_VERIFYPEER => 0,
#CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5,
),
);

пришел к победе коммунистического труда

6
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/11/11 в 13:53       Ответить с цитатойцитата 

FXIX писал:
не придумывай лишнего. возьми Zend_Http


smail101.gif trollface.png

6
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 06/11/11 в 14:05       Ответить с цитатойцитата 

смешного мало smail101.gif. пусть привыкает к хорошему

пришел к победе коммунистического труда

6
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 14:07       Ответить с цитатойцитата 

Спасибо конечно, но куда я его приткну, зенда у меня нет. Апач стоит, и впринципе то что мне нужно на меньшее количество строк выйдет, я сейчас еще туда впихну изменение размера и попробую это всё прикрутить к прошлому скрипту чтоб я уже задание через форму давал. Посмтрим что выйдет. smail101.gif
И так же не интересно, icon_smile.gif сразу взять готовое, я сначала с малого, хоть поизучаю простые функции.

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 14:21       Ответить с цитатойцитата 

FXIX: отжог простотой smail101.gif

6
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 06/11/11 в 14:29       Ответить с цитатойцитата 

Код:
$remote = "http://remote-server.com/image.jpg";
$local  = "local-path/image.jpg";
if( get_file($remote, $local) ) {
    echo 'file saved.';
}
else {
    echo 'something went wrong.';
}


Код: [развернуть]

7
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 06/11/11 в 14:33       Ответить с цитатойцитата 

Lexikon писал:
Спасибо конечно, но куда я его приткну, зенда у меня нет.

зенд скачай. там либ http://framework.zend.com/manual/en/reference.html под 100% твоих пхп задач. и на 10 лет вперед. ты все равно к нему придешь. лучше раньше.

Lexikon писал:

И так же не интересно, icon_smile.gif сразу взять готовое, я сначала с малого, хоть поизучаю простые функции.

ну можешь сокеты пописать и через wireshark заголовки поснифать smail101.gif. послушать что шепчет браузер апачу, и что в ответ апач говорит браузеру.

ты или пишешь код, или юзаешь инструмент. инструмент выглядит так:

подключаем класс Zend_Http_Client через автолоадер. к автолоадерам ты придешь
Zend_Loader::loadClass('Zend_Http_Client');

пишем конфиг браузера. к этому ты придешь когда начнешь писать парсеры и грабилки
$client->setConfig(
юзерагент
авторедирект
прокси
);

$client->setHeaders(
кодировки
чарсеты
тип контента
итд
);

ставим "липкие" куки. к этому ты придешь сразу же на любом первом вебсервисе. или регалке. когда сквозь 6 редиректов через js будет прилетать 33 куки
$client->setCookieJar();

выставляем сам урл
$client->setUri($url);

отправляем и перехватываем ошибки
$response = $client->request();

этим ловим неправильные\несуществующие урлы и вообще любую блевотину и отрыжку апача (коды и слова ответа может покурить. надоест тебе)
Zend_Uri_Exception $exc

это сам файл. в переменной.
$img_src = $response->getBody();

если сервер ответил 200 Ok (он может все что угодно ответить. у бога дней много. невозбраняется ебаться вручную)
$response->isSuccessful()

ну остальное там по картинке.
парсим полученный заголовок Content-Type
$response->getHeader('Content-Type')

получаем расширение картинки. например .png
preg_match("~.*/(.*)~is", $imagetype, $type);

генерим уникальное имя файла в каталоге
$filename = md5(uniqid('', TRUE)) . '.' . $type[1];

пишем файл
file_put_contents($filename, $img_src, FILE_USE_INCLUDE_PATH);

Сложного тут ничего нет. зато 50вмз-шные скрипты ты будешь писать за 5 минут. вместо 50 smail101.gif. Т.к. зенд пишут люди гораздо умнее всех нас вместе взятых - ты получаешь возможность просто писать, а не ебаться

пришел к победе коммунистического труда

7
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/11/11 в 14:39       Ответить с цитатойцитата 

так зенд платный ведь, или я немного не понял что именно мне сделать.
Кстати для работы зенда апач ведь тоже нужен???
Нашел у себя на старом бесплатном диске icon_smile.gif , зенд 5.5.1.282 незнаю как он будет правда работать. Или проще последнюю купить, я смотрю ее сейчас везде рекламят.

Push Траф для Арбитража : Раз | Два
Есть СНГ траф? Лей сюда!

0
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 14:57       Ответить с цитатойцитата 

имеется в виду бесплатный Zend Framework - пхпшный фреймворк, к которому конечно нужен апач и собственно пхп)
есть еще Zend Server - виндовая софтина, которая инсталит тебе сразу и Zend Framework, и апач и пхп.
но она вроде тоже бесплатная.

но я по прежнему думаю что это мазохистский геморой для задач такого уровня smail101.gif

6
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 06/11/11 в 15:30       Ответить с цитатойцитата 

Zend Framework и жаваскриптовые куки читает?

Хотя, даже и если - нафига такой трактор?
То же на курле ($url, $ref, $dest - адрес картинки, реф сайта - можно тот же что и адрес, путь для сохранения):
Код:

function refcopy($url, $ref, $dest)
{
   $user_agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
   $headers = array('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, application/x-matrix, */*', 'Accept-Language: en-us', 'Connection: keep-alive');

   $ch = curl_init();   
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_REFERER, $ref);
   curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
   curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $result = curl_exec($ch);     
   curl_close ($ch);

   file_put_contents($dest, $result);

   return true;
}


Конечно, заголовки не проверяет, но для 95% случаев достаточно.

7
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 06/11/11 в 15:38       Ответить с цитатойцитата 

grozny писал:

но я по прежнему думаю что это мазохистский геморой для задач такого уровня smail101.gif

гемороя нет. в 99% случаев можно все оставить по-умолчанию.

require_once 'Zend_Http_Client';
$client = new Zend_Http_Client($url);
$response = $client->request();
$img = $response->getBody();
file_put_contents('filename', $img);

смысл то в другом совсем.

пришел к победе коммунистического труда

7
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 06/11/11 в 15:45       Ответить с цитатойцитата 

FXIX писал:
гемороя нет. в 99% случаев можно все оставить по-умолчанию.

require_once 'Zend_Http_Client';
$client = new Zend_Http_Client($url);
$response = $client->request();
$img = $response->getBody();
file_put_contents('filename', $img);


о чем я и говорю, в 99% случаев это заменяется на copy($url, 'filename');
чья-то умная мысль - все вещи надо делать настолько просто, насколько это возможно, но не проще icon_wink.gif

6
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/11/11 в 16:07       Ответить с цитатойцитата 

ТС надо перекидать самосвал песка, а ему предлагают использовать грейдер для карьеров вместо лопаты... уверен даже ошибка на таймаут не пригодится, ну не пиздец ли trollface.png

6
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 06/11/11 в 16:21       Ответить с цитатойцитата 

таймаут пригодится если работа идет через цепочку. к примеру через TOR trollface.png

пришел к победе коммунистического труда

6
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »