2013-11-27 16 views
0

我想使用file_get_content從遠程URL獲取jpeg,然後將其複製到我的服務器上。使用file_get_content從表單中獲得一個jpeg,該表單中沒有jpeg。

的網址是:http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480

如果粘貼在它會產生一個JPEG瀏覽器(另存爲將顯示它命名media.jpeg)...

的follwing PHP:

$contents=file_get_contents('http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480'); 

將產生

警告:file_get_contents()函數:php_network_getaddresses:的getaddrinfo 失敗:名稱或 /home/user/public_html/dir/centris.php不知道就行服務208

警告: 的file_get_contents(http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480): 未能打開流:php_network_getaddresses:失敗的getaddrinfo: 名稱或服務不/home/user/public_html/dir/centris.php已知的 線208

如何導入這個圖像有什麼想法? (我嘗試使用COPY獲得相同的結果)

+0

第一個錯誤說明了這一切 - 您的服務器無法將mediaserver.centris.ca解析爲IP地址。它的DNS解析器配置不正確。 –

+0

更新...我使用捲曲,它的工作......不知道發生了什麼 – zefrank

回答

0

在將字符串傳遞到file_get_contents之前,我會建議在字符串上使用urlencode。以下是使用代碼作爲起點的示例。

$raw_url = 'http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480'; 
$url = urlencode($raw_url); 
$contents = file_get_contents($url); 

由於手冊file_get_contents狀態:

如果你有特殊字符,如空格打開一個URI,你 需要用urlencode編碼URI()。

編輯也可能是運行PHP代碼的機器上的DNS問題。當你從命令行運行時會發生什麼?

curl -I "http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480" 

我得到以下200 OK頭從服務器返回當我運行它。命令curl -I將顯示從請求返回的標頭。

HTTP/1.1 200 OK 
Cache-Control: public, max-age=2592000 
Content-Length: 51837 
Content-Type: image/jpeg 
Expires: Fri, 27 Dec 2013 21:41:08 GMT 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Wed, 27 Nov 2013 21:41:08 GMT 
+0

感謝您的快速答案......只是給我警告:file_get_contents(http%3A%2F%2Fmediaserver.centris.ca%2Fmedia。 ashx%3Fid%3DADD242BD121361ADDBF9EDBDBB%26t%3Dpi%26sm%3Dc%26w%3D640%26h%3D480):無法打開流:沒有這樣的文件或d ... – zefrank

+0

可能是您正在運行此腳本的服務器上的DNS上打破了。你是否可以從命令行執行'curl -I「http://mediaserver.centris.ca/media.ashx?id=ADD242BD121361ADDBF9EDBDBB&t=pi&sm=c&w=640&h=480」'?自從'curl -I'示例從此處的註釋中複製時,我剛剛編輯了我的答案。 – JakeGould

+0

我只是嘗試所有24圖片循環COPY函數...隨機在12和18之間將複製,其餘獲得警告:複製():php_network_getaddresses:getaddrinfo失敗:名稱或服務未知在/home/user/public_html/immo/centris.php上線230錯誤???? ? – zefrank