2012-12-12 59 views
0

我想從遠程複製圖片到我的服務器,但它有時會複製錯誤的圖片。我嘗試了幾乎所有的解決方案,但是我會在最下面添加最簡單的一個一個例子。PHP - 從遠程服務器複製圖像時出現的大問題

這個問題很奇怪。如果我從捲曲中解析出一個變量值爲http://www.domain.com/image.jpg,然後我從這裏下載圖像,那麼我得到一個錯誤的圖像。

1)這不工作($形象的價值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'); 

在這兩種情況下,$形象價值是完全一樣的,但是第一個有時下載錯誤的圖像,而第二個總下載正確的。

你能幫忙嗎?

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. 
+0

我懷疑他們是一樣的。在第一個示例中執行'var_dump($ image)'並查看圖像的實際值 –

+0

請記住,哪一個適用,哪個不適用。 –

+0

第二個總是起作用,有時第一個起作用。它通常會產生錯誤的圖像。 – Zox

回答

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

+0

我問,因爲這對我也沒有意義。只有在使用這個nosense部分時,我纔會得到好的結果。我已經嘗試捲曲和打開,但結果是一樣的。但我會再次嘗試你的榜樣。 – Zox

+0

試試我的例子! –

+0

我嘗試了一些變化: 1)$ img = file_get_contents('http://placehold.it/150x150'); - 作品 2)$ img = file_get_contents('http://www.domain.com/image.jpg'); -WORKS 3)$ img = file_get_contents($ image); var_dump($ image)= string(66)「」工作。 – Zox

相關問題