我正在使用头部请求,以检查给定文件是否存在。
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
但是,现在我将文件放在一个受.htaccess限制的文件夹中,通过以下规则
deny from all
但现在看起来jquery总是返回404 Not Found,因为我试图访问一个resricted文件夹。
我不能放弃限制此文件夹,因为用户正在上传文件,我无法确定它们是否安全。
如何检查此文件夹中是否存在文件?鉴于该文件存在于同一个域中?
答案 0 :(得分:0)
除非用户已经登录并且可以访问这些文件,否则您无法访问.htaccess后面的文件。你可以创建一个公共页面(php),它将文件名作为参数,然后进行服务器端检查以查看文件是否存在,并返回一个JSON对象或者是真/假..这样的事情:
$.ajax({
url:'http://www.example.com/checkfile.php?locn=somefile.ext',
error: function()
{
//this happens when jquery cant contact your php script or your server threw an error... 404's and 500's... just show a generic "cant connect to server" or something.
},
success: function(data)
{
//this means you got data back from the server as a 200 response.
//it does not say whether or not the file exists.
//to do that, you must examine the JSON response. perhaps like this:
if (data == true)
{
//the file exists
}
else
{
//the file does not exist
}
}
});
你的checkfile.php可能看起来像这样(伪代码):
$fileloc = $_GET["locn"];
if (file_exists($locn))
{
echo "true";
}
else
{
echo "false";
}
答案 1 :(得分:0)
使用php查找文件,并通过jQuery处理...
<强>的jQuery 强>
$.ajax({
url: "somephpfile.php?file=filename.txt",
success: function(file_exists) {
if(file_exists) {
alert("File Exists");
}
}
});
<强> PHP 强>
<?php
if(file_exists($_GET["file"])) {
echo "1";
} else {
echo "0";
}
确保您在php逻辑中有一些安全性,以确保它不能用于破解您的服务器!