Загрузка картинки со стороннего сервера

it_is_good

Новичок
Загрузка картинки со стороннего сервера

Привет, форумчане!!! Из названия темы уже и так ясно, что мне нужно...

Как я понял, это делается через сокеты.

Начало я сообразил
PHP:
        $url = $_POST[url]; // Здесь мы получили ссылку на картинку
        $j = 0;
        for ($f=0; $f < strlen($url); $f++) // Начали разделение на хостинг и путь
        {
          if ($url[$f] == "/")
            $j++;
          if ($j == 3)
            break;
          $host = $host.$url[$f];
        }

        $path = str_replace($host, "", $url);
        $host = str_replace("http://", "", $url);
        $host = str_replace($path, "", $host); // Закончили разделение

        echo $url." - URL<br />"; // Ради интереса смотрим, что получилось
        echo $path." - Path<br />";
        echo $host." - Host<br />";

        $fp = fsockopen($host,80,$errno,$errstr);
        if(!$fp) echo"$errstr ($errno)<br />\n";
        else
        {
          $headers = "GET $path HTTP/1.0\n\n";
          fputs($fp,$headers);
          $text = "";
          while(!feof($fp)) $text .= fgets($fp,4096);
          fclose($fp);
        }
      $_POST[image] = $text; //Написал просто так, потому что не знаю как надо
А вот как скачанный файл привести в такой формат $_FILES[$name]["tmp_name"]; я, увы, не знаю...
 

Вурдалак

Продвинутый новичок
Нахрена тебе сокеты? copy() / cURL.

Сохраняй полученные данные в файл и всё. Но поскольку ты решил вручную тащить документ, то тебе необходимо сначала отделить его от заголовков.

-~{}~ 09.01.10 23:35:

Да и запрос, естественно, неправильно составлен.
 

it_is_good

Новичок
Как я понял из пс, cURL - это библиотека и ее нужно установить? А откуда качать не нашел, кто даст ссылку
 

pilot911

Новичок
Re: Загрузка картинки со стороннего сервера

Сделай проще


PHP:
			file_put_contents(
							  /*куда сохранить, например*/ 'c:/apache/new_image.gif', 
							  file_get_contents(
									/*урл картинки, например, */ 'http://yandex.ru/logo.gif' 
									FILE_BINARY, 
									stream_context_create(
										array(
											'http' =>
												array(
													'method'  => 'GET',
													'timeout' => 10,
													'header'  => 'Content-type: application/x-www-form-urlencoded',
												)
											)), 
									0, 
									10000000/*максимальный размер в байтах*/), 
							  FILE_BINARY);
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
pilot911
а на кой в GET-запросе Content-type указывать? ))
CT - он для боди

мож ты RFC почитаешь, чем писать фигню?
 

it_is_good

Новичок
Автор оригинала: grigori
pilot911
а на кой в GET-запросе Content-type указывать? ))
CT - он для боди

мож ты RFC почитаешь, чем писать фигню?
Я воспользовался его советом, только все не нужное повыкидывал из этой записи
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
та не, смешно будет продолжить в виде конкурса "напишем 10 разных способов сохранить URL в файл" с призом за экзотичность решения :)
 

zerkms

TDD infected
Команда форума
а с каких пор воровство картинок так весело обсуждается? :)
 

it_is_good

Новичок
А кто говорил про воровство??? На многих форумах, к примеру, есть загрузка аватар через URL илиеще много-чего на других сайтах. И ни кто не говорит про воровство, а тут...
 
Сверху