使用file_get_content从一个URL中获取一个jpeg,其中没有jpeg语法。

时间:2013-11-27 21:21:19

标签: php

我正在尝试使用file_get_content从远程URL获取jpeg,然后将其复制到我的服务器上。

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

如果粘贴在浏览器中,它将生成一个jpeg(另存为将其命名为media.jpeg)...

以下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   失败:未知的名称或服务   第208行/home/user/public_html/dir/centris.php

     

警告:   的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)

1 个答案:

答案 0 :(得分:0)

我建议在将字符串传递给urlencode之前对字符串使用file_get_contents。以下是使用代码作为起点的示例。

$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