Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Скачать картинку с удаленного сайта
Форумы портала PHP.SU » » Вопросы новичков » Скачать картинку с удаленного сайта

Страниц (2): [1] 2 »
 

1. kotyara1979 - 12 Декабря, 2013 - 13:08:50 - перейти к сообщению
Добрый день, уважаемые форумчане.

Собственно, суть вопроса.
1. Есть простейшая страница с изображением (код ниже).
2. Мне нужно скачать картинку.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3.     <head>
  4.         <title>
  5.             jpeg.php (изображение «JPEG», 515 Ч 700 пикселов)
  6.         </title>
  7.     </head>
  8.     <body style="">
  9.         <img src="lib/jpeg.php?photo=1"></img>
  10.     </body>
  11. </html>
  12.  


Страница имеет вот такой вид.
А вот дальше беда.
Если открыть по адресу в браузере, то изображение, конечно, видно и его можно сохранить.
А вот если пытаюсь получить изображение по src, то получаю такой же код.

Можно как либо обойти такую защиту? Можно ли эмулировать браузер через php, что бы получить изображение в кеш и забрать его оттуда, например?

Очень прошу, ткните в нужном направлении.
Заранее, спасибо всем уделившим мне внимание.

Уточнение/дополнение.
Уважаемые форумчане, а возможно ли методами PHP эмулировать полную загрузку страницы? Что бы получить означенную картинку в кэш, и уже оттуда ее каким либо образом выдрать?
Заранее спасибо за возможные варианты.
2. Prizma - 12 Декабря, 2013 - 13:13:25 - перейти к сообщению
kotyara1979 пишет:
<img src="lib/jpeg.php?photo=1"></img>

вообщето тег <img> не имеет закрывающего тега... можно увидеть ссылку на это изображение?
3. kotyara1979 - 12 Декабря, 2013 - 13:16:57 - перейти к сообщению
Prizma пишет:
просто нужно указать правильный заголовок.
в файле jpeg.php добавьте первой строкой (до вывода обязательно) строчку:
и будет вам счастье


Хм. Файл jpeg.php, он не у меня. Что то добавить в него я не могу.
Достаточно ли будет, если я перешлю этот заголовок через контекст?

Плохо эту сферу знаю, к сожалению.
(Добавление)
Prizma пишет:
вообщето тег <img> не имеет закрывающего тега... можно увидеть ссылку на это изображение?


собственно вот, в топике я его несколько упростил:
http://ulmls[dot]real-estate[dot]ru/lib/[dot][dot][dot]2&photo_id=1

мне нужно скопировать через php изображение. Пытался делать copy, file_get_contents. Получаешь приведенный в топике код.
4. Prizma - 12 Декабря, 2013 - 13:39:04 - перейти к сообщению
kotyara1979 пишет:
собственно вот, в топике я его несколько упростил:
http://ulmls[dot]real-estate[dot]ru/lib/[dot][dot][dot]2&photo_id=1
не знаю что у вас не получается через img... у меня все работает.
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title></title>
  5. </head>
  6. <body>
  7. <img src="http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1">
  8. </body>
  9. </html>

может быть вы путь относительный указали вместо полного адреса?
5. kotyara1979 - 12 Декабря, 2013 - 13:46:56 - перейти к сообщению
Prizma

Мне не нужно просто отобразить изображение на странице, мне нужно скачать изображение, используя php-скрипт.
6. esterio - 12 Декабря, 2013 - 13:51:01 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $ch = curl_init('http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1');
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  3. $response = curl_exec($ch);
  4.  
  5. file_put_contents(__DIR__.DIRECTORY_SEPARATOR.'image.jpg', $response);

?
7. kotyara1979 - 12 Декабря, 2013 - 14:03:16 - перейти к сообщению
esterio

Сейчас попробую. с curl-ом работать не приходилось, сейчас материал подтяну.

В любом случае спасибо за направление.

Нет. Не прокатило. Результат соответствует моему. Пишется файл image.jpg, но его содержание:
Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

У меня получался тот же файл разными путями.
8. kosik82 - 12 Декабря, 2013 - 14:38:01 - перейти к сообщению
kotyara1979 пишет:
Мне не нужно просто отобразить изображение на странице, мне нужно скачать изображение, используя php-скрипт.


пойдет?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  4.  $dest = imagecreatefromjpeg($url);
  5.  
  6. header('Content-Type: image/jpeg;');
  7. header('Content-Disposition: attachment; filename="file.jpg"');
  8.  
  9. imagejpeg($dest, NULL, 75);
  10.  
  11. ?>


PHP:
скопировать код в буфер обмена
  1. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  2.  $dest = imagecreatefromjpeg($url);
  3.  
  4. imagejpeg($dest, "file.jpg", 75);
9. esterio - 12 Декабря, 2013 - 14:42:53 - перейти к сообщению
kosik82 пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить
10. kosik82 - 12 Декабря, 2013 - 14:47:25 - перейти к сообщению
esterio пишет:
kosik82 пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить


какие хостеры запрещают?

тогда с библиотекой WideImage

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include_once  'lib/WideImage.php';
  3. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  4. $img = WideImage::load($url);
  5. $img->saveToFile("file.jpg",75);
  6. ?>
11. esterio - 12 Декабря, 2013 - 14:51:48 - перейти к сообщению
kosik82
kosik82 пишет:
какие хостеры запрещают?

Большинство.
http://php.net/manual/en/wrappers.http.php
http://www.php.net/manual/en/fil....allow-url-fopen

Зачем какая-то там библиотека, если есть cURL и 5 строчек кода
12. kosik82 - 12 Декабря, 2013 - 14:58:06 - перейти к сообщению
esterio пишет:
Большинство.

я еще не сталкивался с хостерами где imagecreatefromjpeg($url) не работало бы.
esterio пишет:
Зачем какая-то там библиотека, если есть cURL и 5 строчек кода

может он захочет сразу свой лого на картинку накладывать.
к тому же он же написал, что курл у него не работает.
(Добавление)
esterio пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить
esterio пишет:
Большинство.
http://php.net/manual/en/wrappers.http.php
http://www.php.net/manual/en/fil....allow-url-fopen


в твоей же ссылке
On Windows versions prior to PHP 4.3.0, the following functions do not support remote file accessing: include, include_once, require, require_once and the imagecreatefromXXX functions in the GD and Image Functions extension.
это до PHP 4.3.0
13. esterio - 12 Декабря, 2013 - 15:24:44 - перейти к сообщению
kotyara1979 пишет:
Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

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

Не думаю что библиотека идет другим путем

Ссилкы приведены, чтобы показать что один флаг в настройках и работать такое не будет
14. Prizma - 12 Декабря, 2013 - 15:37:41 - перейти к сообщению
kosik82 пишет:
какие хостеры запрещают?

есть еще вот такой метод, не знаю насколько он тут уместен Улыбка мне дак кажется причина в другом, но все же раз уж зашла об этом тема:
.htaccess
CODE (htmlphp):
скопировать код в буфер обмена
  1. #Предотвращение кражи изображений и файлов
  2.  
  3. Options +FollowSymLinks
  4. RewriteEngine On
  5. RewriteBase /
  6. RewriteCond %{HTTP_REFERER} !^$
  7. RewriteCond %{HTTP_REFERER} !^http://(www\\.)?askapache.com/.*$ [NC]
  8. RewriteRule \\.(gif|jpg|swf|flv|png)$ http://www.askapache.com/evil-hotlinker.… [R=302,L]

*пример взят с http://habrahabr[dot]ru/post/31054/
15. esterio - 12 Декабря, 2013 - 15:42:35 - перейти к сообщению
Prizma
Да тут вообще facepalm. Вот тебе критика
Картинка на другом ресурсе отдаеться скриптом. Нужно скачать и сохранить. Подумай башкой теперь

 

Powered by ExBB FM 1.0 RC1