2012-02-28 51 views
0

我有以下问题。我使用curl从服务器下载图像。我为图像自动生成名称并下载它。一些生成的图像名称不是返回图像。我如何知道url是否返回图片?如何知道url是否返回图片PHP?

对不起,我的“破”英语。

提前致谢!

+0

所以你通过生成一个随机文件名并向该文件名发出请求来从服务器请求图像?如果没有找到图像,那不会返回404吗?一小段代码会澄清很多。 – CodeCaster 2012-02-28 10:48:10

回答

0

我建议你把你的数据流传输到你的服务器像你已经做的。要在尝试转换之前进行检查,可以使用finfo-file

更复杂的方式可能是设置Accept标题,例如,如果标题匹配,使用cUrl仅获得响应。例如:

curl_setopt($cURL,CURLOPT_HTTPHEADER,array (
     "Accept: application/json" 
    )); 

或者使用CURLINFO_CONTENT_TYPE,看到http://ch.php.net/manual/en/function.curl-setopt.php

+0

使用'Accept'很大程度上取决于远程服务器和其上的任何应用程序的实现。 – cmbuckley 2012-02-28 10:57:20

+0

嗯,你是对的。 – pduersteler 2012-02-28 11:33:09

1

维陶塔斯答案是正确的,但不完整。

$url = 'http://test.com/test/test/something'; 

$c = curl_init($url); 

// Here you would want to set more curl settings, such as 
// enabling redirection and setting a valid user agent. 

curl_exec($c); 

$t = curl_getinfo($c, CURLINFO_CONTENT_TYPE); 

之后,$t应该(和一些其他的东西一起)包含MIME类型,当错误发生时,除了在这一点上,你得到一个NULL。

这就是说,有3个点,你应该检查,以确保返回的数据是某种类型的:

相关问题