Php 文件_exists($url)在ajax调用中不起作用

Php 文件_exists($url)在ajax调用中不起作用,php,jquery,ajax,Php,Jquery,Ajax,我在文件中有一个名为“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(){

我在文件中有一个名为“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>

$(文档).ready(函数(){
$(“#btn”)。单击(函数(){
jQuery.ajax({
网址:'http://example.com/TEST/images.php',
键入:“POST”,
数据:{
名称:'black-ring1.gif'
},
成功:功能(数据、状态){
如果(数据){
警报(数据);
}
}
});
});
});
按钮

调用ajax时执行的“images.php”文件包含以下代码

<?php
$image_name = $_POST['name'];
$src = "http://example.com/images/icons/" . $image_name;

if(file_exists($src)){
    echo "Exists";
}else{
    echo "Does not exist";
}

文件\u存在
不能与
http://
URL一起使用。从:

从PHP5.0.0开始,这个函数也可以与一些URL包装器一起使用。请参阅以确定哪些包装器支持
stat()
功能系列

如果你点击该链接,然后点击该链接,它会显示:

支持stat()否

相反,您可以尝试打开URL。如果成功,则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";
}

首先,您需要验证是否传递了名称

(!empty($_POST["name"])) {
  $image_name = $_POST['name'];
  $src = "http://example.com/images/icons/" . $image_name;
}else{  
    echo "no, name";
}
然后可以使用CURL检查url是否存在

if(is_url_exist($src)){
    echo "Exists";
}else{
    echo "Does not exist";
}
此代码来自此

你也可以从这里试试

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\u get\u contents($url)
的操作,因为这实际上会下载完整的图像,然后将其扔掉,从而浪费您和远程服务器的带宽。

file\u exists()
检查文件。URL不是文件。在这种情况下,您可以使用
file\u get\u contents()
,也可以利用curl,因为两者都允许使用URL<代码>文件\u获取内容()==错误
错误。如果您对文件具有本地访问权限,则应使用本地文件路径和基本文件操作,因为从长远来看,它们的性能更好。
if (file_exists('/path/to/images/foo.png')) {
    ...
}
$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";
}