2012-02-05 68 views
3

我試圖將圖像從遠程服務器用下面的代碼複製:複製的圖像從一個服務器到另一個使用PHP

$src = "http://www.imagelocation.com/image.jpg"; 
$dest = "/server/location/upload/"; 
file_put_contents($dest, file_get_contents($src)); 

不幸的是我不斷收到以下錯誤:

Warning: file_put_contents(/server/location/upload/) [function.file-put-contents]: failed to open stream: Is a directory in /server/location/myscript.php on line 220

你有什麼想法如何解決這個問題?

回答

9
$src = "http://www.imagelocation.com/image.jpg"; 
$dest = "/server/location/upload/" . basename($src); 
file_put_contents($dest, file_get_contents($src)); 

您需要指定文件名。我添加了basename($src),它將寫入與原始文件相同的文件名。請注意,如果您從其他目錄複製,basename()僅返回文件名,所以如果您複製/image.jpg和/a/image.jpg,則會覆蓋原始文件。

+0

完美,這個例子確實也有幫助。謝謝!另一方面,如果複製成功或沒有成功,我將如何解決? – David 2012-02-05 20:25:47

+2

使用$ check = file_put_contents($ dest,file_get_contents($ src)); 並查看$ check的值。 http://php.net/manual/en/function.file-put-contents.php說: 該函數返回寫入文件的字節數,或失敗時返回FALSE。 – Daan 2012-02-05 20:30:31

2

這是因爲$ dest是一個目錄,而不是文件。您可以手動指定文件名或使用基本名稱()

+0

謝謝你解釋我出錯的地方。這非常有用! – David 2012-02-05 20:26:24

相關問題