2016-06-21 2 views
3

google places API에서 반환 된 이미지를 내 서버에 저장해야합니다.google places api 사진을 내 서버에 저장

$url= 'https://maps.googleapis.com/maps/api/place/photo?key=API_KEY_HERE&photo_reference=CoQBcwAAAAtXfnhO3WCagOlY4p4Px7N8Pcks_N-cLbMQzruT-AdWRZoyJgABVUUcuZ_4bbcUdReloBl2zGd80W4E4w-N_kyab4xz4S3ZZIRVECCJP1u7JsXOfxEsx4XQbL-HeMBRKzNul0XSdy-Dv4495i_8-SqYqTBZMaLvn1YLaVM3aAzOEhBgLV4lpKeM39L6gb9wBbU6GhSmCkYp8djpm9_iaqkS93z4ekLnNg&maxheight=200' 

$target = md5($array['result']['photos'][0]['photo_reference']); 
$newname = 'img/googlephotos/newimage'.$target; 
file_put_contents($newname,file_get_contents($url)); 

을하지만 작동하지 않습니다 - 빈 파일이 아닌 이미지를 저장 저장할 때 - 나는 그것이 파일 확장자를없는 생각하지만 난 그것을 얻을하는 방법을 잘 모르겠어요 : 나는 시도했습니다. 누구든지 Google 장소 사진을 저장하는 방법을 알고 있습니까?

나는 코드를 작성하는 데 PHP를 사용하고 있습니다.

어떤 도움도 좋을 것

답변

1

서비스 약관의 제한 사항에 유의해야합니다. 특히, 제 10.5 (d)는 말한다 :

당신은, 캐시, 인덱스를 프리 페치, 또는 당신이 전적으로 목적을 위해 내용의 제한된 양을 저장할 수 있습니다 것을 제외하고, 서비스 외부에서 사용하는 모든 내용을 저장하지 않습니다 네트워크 대기 시간으로 인해 Maps API 구현의 성능을 향상시킬 수 있습니다 (Google에서 정확하게 사용을 추적하지 못하도록하기위한 목적이 아닙니다). 은 일시적이며 어떠한 경우에도 30 일 (달력 일)이 넘지 않는 경우에만 해당합니다. 안전하다; 은 콘텐츠 또는 서비스의 일부를 조작하거나 집계하지 않습니다. 은 어떤 식 으로든 기여를 수정하지 않습니다. 는 서비스 약관처럼 보이는이 시점에서 https://developers.google.com/maps/terms#10-license-restrictions

은 서버에서 이미지를 저장 할 수 없습니다.

+0

이것은 흥미로운 점입니다.내가 아는 한 Google Maps API에는 제한된 요청 수가 있습니다. 따라서 한 달에 한 번만 콘텐츠를 업데이트하는 등의 요청을 줄이는 것이 목적이었습니다. 그래서 내 사용자에게 콘텐츠를 보여주고 싶을 때마다 이미지를로드하라는 요청을 할 필요가 없습니다. –

0

귀하의 질문에 답변 나는 당신과 비슷한 것을하려고하지만 리디렉션 URL (secon one)을 사용하려고합니다. 당신이 Google 지역 정보에서 사진 URL을하고 싶어 할 때 아시다시피이 URL을 보낼 수 있습니다

$url = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=$maxwidth&photoreference=$reference&key=$api_key"; 

을하지만 그것은 그에게 리디렉션

https://lh6.googleusercontent.com/-n5VUsX_0WSA/VU3vvlOKX3I/AAAAAAAAEN8/yg9TAhSbvCwC8lA3bB56SjcUcAx3zXYtQCLIB/s1600-w800/ 

내가 무엇을 먼저 초를 얻을 수있다 어쩌면이 할 수있는이 당신을 제공 URL은 다음 컬에서 파일하지만 결과 당신보다 그와 유사한, 빈 파일 (0bytes)을 얻으려고 내가 다른 형식 (JPG, PNG 및 GIF)

function get_photos_from_google_places($reference){ 
     $api_key = "YOUR API KEY"; 
     $maxwidth = 800; 
     $url = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=$maxwidth&photoreference=$reference&key=$api_key"; 

     $furl = false; 
     // First check response headers 
     $headers = get_headers($url); 
     // Test for 301 or 302 
     if(preg_match('/^HTTP\/\d\.\d\s+(301|302)/',$headers[0])) 
     { 
      foreach($headers as $value) 
      { 
       if(substr(strtolower($value), 0, 9) == "location:") 
       { 
        $furl = trim(substr($value, 9, strlen($value))); 
       } 
      } 
     } 
     // Set final URL 
     $furl = ($furl) ? $furl : $url; 

     //Save the photo file to directory 
     $ch = curl_init($furl); 
     $fp = fopen('./files/media/image.png', 'wb'); 
     curl_setopt($ch, CURLOPT_FILE, $fp); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_exec($ch); 
     curl_close($ch); 
     fclose($fp); 

     echo $furl; 
     echo "<br><hr>"; 
     echo $fp; die(); 

    } 

으로 시도 어떤 생각. 누군가 그것을 어떻게하는지 안다면 그것은 감사 할 것입니다.

고맙습니다.

관련 문제