我正在尝试使用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)
答案 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