2017-02-09 9 views
0

URL에서 내 서버의 이미지 목록을 가져 오기 위해 사용자 지정 기능을 만들고 있습니다. 일부 이미지는 복사되고 일부 이미지 파일 크기는 0B입니다. 브라우저에서 해당 이미지 URL을 열면 정확한 이미지가 표시됩니다. 내가 이미지를 복사하는 복사 기능을 사용하고URL에서 이미지를 다운로드하고 복사하는 방법은 무엇입니까?

:

IMG을 $
copy($img, DIR_IMAGE.'catalog/'.$filename); 

이미지와 $ 파일 이름이 이미지의 기본 이름을 포함하는의 HTTP URL을 포함하고 있습니다.

  $file = fopen ($img, "rb"); 
      if ($file) 
      { 
       $newf = fopen (DIR_IMAGE.'catalog/'.$filename, "wb"); 

       if ($newf) 
       while(!feof($file)) 
       { 
        fwrite($newf, fread($file, 1024 * 8), 1024 * 8); 
       } 
      } 
      if ($file) 
      { 
       fclose($file); 
      } 

      if ($newf) 
      { 
       fclose($newf); 
      } 

사람이 어떻게이 문제를 해결하는 저를 제안 할 수 있습니다 :

나는 또 다른 대안을 시도했다.

미리 감사드립니다. 당신은 또한에에 도메인을 알아야합니다

$ch = curl_init(); 
$fp = fopen(DIR_IMAGE.'catalog/'.$filename, "w"); 
curl_setopt($ch, CURLOPT_URL, $img); 
curl_setopt($ch, CURLOPT_MUTE, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0"); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/c"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/c"); 
curl_setopt($ch, CURLOPT_REFERER, "http://".$imgDomain."/"); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0"); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

:

+0

0B는 이미지 그룹에 대해 일관 적이거나 무작위입니까? 길이가 0 인 이미지를 얻을 수있는 이미지를 제공 할 수 있습니까? – emiliopedrollo

+0

어떤 웹 사이트는 이미지에 핫 링크 보호 기능을 제공하지만 더 자세한 정보가 필요합니다. – emiliopedrollo

+0

동일한 사이트의 모든 이미지를 처리하고 있습니다. 위의 코드를 사용하여 하나의 이미지를 복사 할 수 있다면 다른 이유는 무엇입니까? –

답변

0

그것은 사건의 경우 그 사진을 다운로드하려면 약간 더 복잡한 전화를해야합니다, 이미지 핫 링크 보호 할 수있다 이미지는 액세스 할 수 있으며 (호스팅 된 것과 같을 수도 있고 그렇지 않을 수도 있음) 리퍼러 헤더로 제공 할 수 있습니다 (위와 같음).

+0

$ imgDomain은 이미지를 복사 할 도메인 이름입니다. –

+0

예, 그렇습니다. 리퍼러는 요청 내에서 주소가 있다고 가정합니다 (그림을 볼 수있는 권한이있는 곳) – emiliopedrollo

+0

위의 해결책을 시도했지만 여전히 일부 이미지를 복사하지 않습니다. :( –