2014-08-28 108 views
-2

我有一个简单的代码来检查文件是否存在于服务器中。如何知道我的图像是否存在于服务器上? (PHP)

<?php 
$filename = 'www.testserver/upload/productimg/IN.ZL.6L_sml.jpg'; 

if (file_exists($filename)) { 
     echo "The file $filename exists"; 
} else { 
     echo "The file $filename does not exist"; 
} 
?> 

问题:我的本地网络服务器说,即使当我复制粘贴到浏览器的网址虽然,我可以看到图像的文件不存在。

如何让条件说文件不存在?

+0

您需要构建与web服务器“DOCUMENT_ROOT”相关的本地路径,而不是使用类似URL的字符串。 – mario 2014-08-28 13:50:49

+2

'www.testserver/...'不是有效的**文件路径**。无论你是在谈论远程服务器上的URL,在这种情况下,你需要使用'http:// www ...',或者你的意思是一个*本地*文件在同一台服务器上,在这种情况下,你需要使用'/ usr/local/var/...'这样的* local *文件路径。 – deceze 2014-08-28 13:52:02

+0

是'www'actually你的路径的一部分?它是一个文件夹吗?如果不是,你可能不应该在'file_exists'函数中使用它,而是使用本地路径代替... – 2014-08-28 13:52:26

回答

0

图像的真实路径,你可以尝试:

<?php 
$filename = 'www.testserver/upload/productimg/IN.ZL.6L_sml.jpg'; 
$testImage = @file_get_contents($filename); 

if ($testImage != NULL) { 
    echo "The file $filename exists"; 
} else { 
    echo "The file $filename does not exist"; 
} 
?> 
1

另一种选择是,提出请求并检查响应头:

<?php 
    $headers = get_headers('http://www.example.com/file.jpg'); 

    if($headers[0]=='HTTP/1.0 200 OK'){ 
     return true; // file exists 
    }else{ 
     return false; // file doesn't exists 
    } 
    ?> 

代码活生生的例子:
http://codepad.viper-7.com/qfnvme

0

使用

$filename = $_SERVER["DOCUMENT_ROOT"]."/upload/productimg/IN.ZL.6L_sml.jpg"; 

用于测试文件。

相关问题