Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сохранить картинку на сервере
 
 автор: aetern   (13.10.2011 в 00:59)   письмо автору
 
 

Никак не могу сохранить на сервере картинку, генерируемую с помощью Google Chart API
картинка формируется так
<img src="<?=$url?>" />

где $url имеет вид:
$url='http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82';


Ни copy(), ни file_get_contents() не помогают. Как быть?

  Ответить  
 
 автор: sl1p   (13.10.2011 в 01:18)   письмо автору
 
   для: aetern   (13.10.2011 в 00:59)
 

во-первых приведите код который вы используете.

во-вторых, проверил, всё ок:
<?php
$url 
'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82';
file_put_contents("image.png"file_get_contents($url));
?>

  Ответить  
 
 автор: aetern   (13.10.2011 в 23:37)   письмо автору
 
   для: sl1p   (13.10.2011 в 01:18)
 

Я плохо знаком с ООП, но $url у меня формируется из Гугловских классов
$qr = new gQRCode();
$txt = 'Тест';
$qr->setQRCode($txt);
$url = $qr->getUrl();

и выдается:
Warning: file_get_contents(http://chart.apis.google.com/chart?chs=200x200&amp;cht=qr&amp;chl=%D0%A2%D0%B5%D1%81%D1%82) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in ...

Да, если ввести просто переменную $url, то все работает, а вот если ее создать, присвоив ей значение члена класса, то не работает. Почему?

  Ответить  
 
 автор: sl1p   (14.10.2011 в 02:01)   письмо автору
 
   для: aetern   (13.10.2011 в 23:37)
 

просмотрите что получилось в переменной:

var_dump($url)


и выложите полный код, потому что, ничего не понятно.

  Ответить  
 
 автор: aetern   (14.10.2011 в 20:20)   письмо автору
 
   для: sl1p   (14.10.2011 в 02:01)
 

при
var_dump($url)

пишет:
string(90) "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82"

>и выложите полный код, потому что, ничего не понятно.

Так это и есть весь код:
require_once("gChart.php"); 
$qr = new gQRCode();
$txt = 'Тест';
$qr->setQRCode($txt);
$url = $qr->getUrl();
echo "<img src=\"".$url."\" />";
file_put_contents("image.png", file_get_contents($url));
$imageinfo = @getimagesize('image.png');
echo "<pre>";
print_r($imageinfo);
echo "</pre>";


в gChart.php находится класс см.: http://gchartphp.googlecode.com/svn/trunk/gChart.php

Сама картинка в браузере отображается, а вот скачиваться - не скачивается!!!

  Ответить  
 
 автор: sl1p   (14.10.2011 в 20:34)   письмо автору
 
   для: aetern   (14.10.2011 в 20:20)
 

проверьте значение директивы allow_url_fopen в php.ini
должно быть
allow_url_fopen = On

  Ответить  
 
 автор: aetern   (14.10.2011 в 21:28)   письмо автору
 
   для: sl1p   (14.10.2011 в 20:34)
 

allow_url_fopen = On
так и есть.
А у вас что, работает?

Причем, видимо, все дело в переменных, если сделать
<?
preg_match
("/^http:\/\/.+/i",$url$newurl);
//и ввести 
$url2 'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82';
//то
$newurl[0] != $url2
$url 
!= $url2
//но
$newurl[0] === $url
//хотя если их все вывести ехом (echo), то видно, что содержание у них одинаковое.
?>

В чем же дело???

  Ответить  
 
 автор: aetern   (16.10.2011 в 14:28)   письмо автору
 
   для: aetern   (14.10.2011 в 20:20)
 

Мастера, наведите на путь истинный. Как скачать эту картинку на свой сервер?

  Ответить  
 
 автор: sl1p   (16.10.2011 в 16:33)   письмо автору
 
   для: aetern   (16.10.2011 в 14:28)
 

HTTP request failed! HTTP/1.0 400 Bad Request in ...

Это ошибка в синтаксисе при обращении к серверу.
Значит, что
var_dump($url)

пишет:
string(90) "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82"

не правда, перепроверьте что у вас в переменной $url;

  Ответить  
 
 автор: aetern   (18.10.2011 в 16:10)   письмо автору
 
   для: sl1p   (16.10.2011 в 16:33)
 

>не правда, перепроверьте что у вас в переменной $url;

Все точно так. Но если сделать

<?
var_dump
($url);
var_dump($url2); // эта та, где я просто присвоил значение $url2='...';
?>

то пишет:
string(90) "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82" 

string(82) "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=%D0%A2%D0%B5%D1%81%D1%82"


Может это как-то объясняет, что с моей переменной $url?

  Ответить  
 
 автор: aetern   (19.10.2011 в 19:05)   письмо автору
 
   для: aetern   (18.10.2011 в 16:10)
 

А-а-а!!!
Разобрался благодаря
str_split($url);

там в классе при формировании строки урла вместо & вставлялись &amr; и все поганили, перестраховщики, блин!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования