这会吐出一大堆NO,但图像在那里,路径正确,因为<img>
显示它们。
foreach ($imageNames as $imageName)
{
$image = 'http://path/' . $imageName . '.jpg';
if (file_exists($image)) {
echo 'YES';
} else {
echo 'NO';
}
echo '<img src="' . $image . '">';
}
答案 0 :(得分:15)
file_exists查找本地路径,而不是“http://”URL
使用:
$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
答案 1 :(得分:14)
file_exists
使用本地路径,而不是网址。
解决方案是:
$url=getimagesize(your_url);
if(!is_array($url))
{
// The image doesn't exist
}
else
{
// The image exists
}
请参阅此内容以获取更多information。
此外,查找响应标头(使用get_headers
功能)将是更好的选择。只需检查响应是否为404:
if(@get_headers($your_url)[0] == 'HTTP/1.1 404 Not Found')
{
// The image doesn't exist
}
else
{
// The image exists
}
答案 2 :(得分:2)
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($retcode==200) echo 'YES';
else echo 'NO';
答案 3 :(得分:1)
这就是我所做的。它涵盖了获取标题的更多可能结果,因为如果您无法访问该文件,则并不总是只有“404 Not Found”。有时它是“永久移动”,“禁止”和其他可能的消息。但是,如果文件存在,它只是“200 OK”,并且可以访问。使用HTTP的部分可以有1.1或1.0之后,这就是为什么我只使用strpos在每种情况下都更可靠。
$file_headers = @get_headers( 'http://example.com/image.jpg' );
$is_the_file_accessable = true;
if( strpos( $file_headers[0], ' 200 OK' ) !== false ){
$is_the_file_accessable = false;
}
if( $is_the_file_accessable ){
// THE IMAGE CAN BE ACCESSED.
}
else
{
// THE IMAGE CANNOT BE ACCESSED.
}
答案 4 :(得分:0)
function remote_file_exists($file){
$url=getimagesize($file);
if(is_array($url))
{
return true;
}
else {
return false;
}
$file='http://www.site.com/pic.jpg';
echo remote_file_exists($file); // return true if found and if not found it will return false