Php 文件_exists($url)在ajax调用中不起作用
我在文件中有一个名为“test.php”的文件,我有以下代码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(){
<!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";
}