2010-12-03 15 views
0

Я пытаюсь построить график, содержащий около 7000 символов с API Google Chart, но URL будет принимать только 2000 символов. Однако я прочитал, что запрос POST может поддерживать до 16 тыс. Символов, поэтому я пытаюсь использовать это для отображения диаграммы. Есть пример PHP, как визуализировать график, а затем использовать этот файл php в качестве img src, однако как передать свой dataload на эту другую страницу?Google Chart API Chart Request Too Large

Если я поместил его как параметр GET в img src, он снова будет слишком много символов. Я читал, что вам не нужно указывать URL больше 2000 символов, если вы можете ему помочь,

Возможно, я мог бы вывести его в файл, а затем у него есть файл img php, чтобы он мог его вытащить каждый раз, когда он был запрошен?

Если кто имеет какие-либо предложения, это будет огромная помощь,

Спасибо!

Я читал, что ограничение по URL-адресу зависит от браузера, IE составляет около 2000, означает ли это, что img src с большим количеством символов, чем это, будет неправильно отображаться в этом браузере? Кроме того, FF имеет гораздо больший предел, следующий веб-сайт говорит о более чем 100 000, так что он будет отображаться в FF?

http://www.boutell.com/newfaq/misc/urllength.html

ответ

0

Я просто выкупил в dataload с отдельной просьбой и затем использовать файл PHP в качестве источника изображения.

0

Используйте curl для преобразования запроса «GET» на мой прокси-скрипт в запрос «POST» в Google. Тогда вы можете просто заменить свой прокси-url для googles в своем приложении.

function getChartProxy() 
{ 
    if(isset($_GET) && count($_GET)){ 
     ob_clean();//remove any header or error messages from the output buffer 
     //example for testing 
     // $url = "http://chart.apis.google.com/chart?cht=p&chs=250x100&chd=t:40,30,20&chl=Hispanic|NonHispanic|Incomplete"; 

     $getData = http_build_query($_GET); 
     $url = 'http://chart.apis.google.com/chart';   
     $ch = curl_init(); 

     curl_setopt ($ch, CURLOPT_URL, $url); 
     curl_setopt ($ch, CURLOPT_HEADER, 0); 

     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS,$getData); 
     ob_start(); 

     curl_exec ($ch); 
     curl_close ($ch); 
     $bytes = ob_get_contents(); 

     ob_end_clean();  
     header('Content-type: image/png'); 
     echo $bytes; 
    } 
} 

Эта вещь является прокси-сервером, поэтому для ее использования требуется определенный контроль доступа.