2017-02-09 14 views
0

自分のサーバー上の画像の一覧を自分のURLからインポートするカスタム機能を作成しています。問題は一部の画像がコピーされ、一部の画像ファイルのサイズが0Bです。ブラウザで画像URLを開くと、正しい画像が表示されます。私は画像をコピーするコピー機能を使用していますURLから画像をダウンロードしてコピーするには?

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

は、画像と$ 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); 
      } 

誰がどのようにこの問題を解決するために私を提案することができます。

ありがとうございました。

+0

0Bは画像のグループで一貫していますか、それともランダムですか?あなたは0の長さの画像を得るところでいくつかの画像を提供できますか? – emiliopedrollo

+0

起こっていることがあるのは、一部のWebサイトでは画像のホットリンクの保護が提供されていますが、私はそれを確認するためにさらに情報が必要です。 – emiliopedrollo

+0

私は同じサイトのすべての画像に対処しています。私は上記のコードを使用して1つのイメージをコピーすることができますなぜ他の? –

答えて

0

それはケースだ場合は、その画像をダウンロードするには少し複雑な呼び出しを行う必要があるでしょう、画像のホットリンク保護することがあります。

$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

$ imgDomainは画像をコピーしているドメイン名です –

+0

はい、そうです。 refererは要求内のアドレスであると仮定されています(画像を見る権限を持つどこかで) – emiliopedrollo

+0

私は上記の解決策を試みましたが、まだいくつかの画像をコピーしていません.. :( –

関連する問題