0

リモートからサーバーに画像をコピーしたいのですが、間違った画像がコピーされることがあります.ほとんどすべてのソリューションを試しましたが、例として最も簡単なものを以下に追加します.

問題は非常に奇妙です。http://www.domain.com/image.jpgという値を持つ curl の変数を解析し、そこから画像をダウンロードすると、間違った画像が取得されます。

1) これは機能しません ( $image の値はhttp://www.domain.com/image.jpgです)

//url of a picture
$image = $result->xpath('image-url');
$image = (string)$image[0];


copy($image, '/patch/image.jpg');

2)これは機能します-画像のURLを直接定義すると。

//url of a picture pulled by curl
$image = $result->xpath('image-url');
$image = (string)$image[0];


if($image == 'http://www.domain.com/image.jpg') {

 $image = 'http://www.domain.com/image.jpg';
}


copy($image, '/patch/image.jpg');

どちらの場合も $image の値はまったく同じですが、最初の例では間違った画像がダウンロードされることがありますが、2 番目の例では常に正しい画像がダウンロードされます。

助けていただけますか?

 I have tried few variation:
 1) $img = file_get_contents('http://placehold.it/150x150');  - WORKS
 2) $img = file_get_contents('http://www.domain.com/image.jpg');  -WORKS
 3) $img = file_get_contents($image);   where  
 var_dump($image) = string(66) "http://www.domain.com/image.jpg"
 echo $image =   http://www.domain.com/image.jpg Doesn't work.
4

1 に答える 1

3

これはまったく論理的ではありません:

if($image == 'http://www.domain.com/image.jpg') {

 $image = 'http://www.domain.com/image.jpg';
}

これを試して:

$img = file_get_contents('http://placehold.it/150x150');
$fh = fopen('path/to/image/new', 'w+');
if (is_resource($fh)) {
    fwrite($fh, $img);
    fclose($fh);
}

そのような場合には使用しませんcopy()。または
を使用することをお勧めします。file_get_contents()curl

于 2012-12-12T14:09:21.687 に答える