0

我想将图片从远程复制到我的服务器,但它有时会复制错误的图像。我尝试了几乎所有解决方案,但我将添加下面最简单的一个作为示例。

问题很奇怪。如果我从 curl 解析一个值为http://www.domain.com/image.jpg的变量,然后我从中下载图像,那么我得到一个错误的图像。

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 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 的值完全相同,但第一个有时会下载错误的图像,而第二个总是下载正确的图像。

你能帮忙吗?

 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 回答