我在文件中有一个名为'test.php'的文件,我有以下代码
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn").click(function(){
jQuery.ajax({
url : 'http://example.com/TEST/images.php',
type : 'POST',
data : {
name : 'black-ring1.gif'
},
success : function(data, status) {
if(data){
alert(data);
}
}
});
});
});
</script>
</head>
<body>
<p id="btn">Button</p>
</body>
</html>
我的'images.php'文件,当ajax调用时会执行以下代码。
<?php
$image_name = $_POST['name'];
$src = "http://example.com/images/icons/" . $image_name;
if(file_exists($src)){
echo "Exists";
}else{
echo "Does not exist";
}
在'images.php'中,file_exists($ url)给了我总是错误的答案(不存在)..我确定$ url确实在给定的URL中退出..但为什么它不起作用。我怎么能让它发挥作用......请帮助我......谢谢..
答案 0 :(得分:0)
file_exists
无法与http://
网址一起使用。来自documentation:
从PHP 5.0.0开始,此函数也可以与某些URL包装器一起使用。请参阅Supported Protocols and Wrappers以确定哪些包装器支持
stat()
系列功能。
如果您按照该链接进行操作,然后按照http://
链接进行操作,则说明:
支持stat()否
相反,您只需尝试打开网址即可。如果成功则存在URL。
<?php
$image_name = $_POST['name'];
$src = "http://example.com/images/icons/" . $image_name;
if($fh = fopen($src)){
echo "Exists";
close($fh);
}else{
echo "Does not exist";
}
答案 1 :(得分:0)
首先,您需要验证是否传递了名称
(!empty($_POST["name"])) {
$image_name = $_POST['name'];
$src = "http://example.com/images/icons/" . $image_name;
}else{
echo "no, name";
}
然后您可以使用CURL检查网址是否存在
if(is_url_exist($src)){
echo "Exists";
}else{
echo "Does not exist";
}
此代码来自此SO
function is_url_exist($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$status = true;
}else{
$status = false;
}
curl_close($ch);
return $status;
}
您也可以尝试使用此SO
if (getimagesize($src) !== false) {
echo "Exists";
}else{
echo "Does not exist";
}
答案 2 :(得分:0)
file_exists()检查文件。 URL不是文件。如果您要查找的图像文件位于本地服务器上,则可以使用完整路径名称:
if (file_exists('/path/to/images/foo.png')) {
...
}
如果文件位于远程服务器上,并且您要测试引用它的URL是否有效,则可以使用CURL对其执行HEAD请求:
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'HEAD');
$result = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);
if ($info['http_code'] == 200) {
echo "image exists\n";
}
除非你真的需要图像内容,否则我不建议做像file_get_contents($url)
这样的事情,因为这实际上会下载完整的图像然后把它扔掉,浪费你和远程服务器的带宽。