使用JavaScript检查本地文件是否存在

我想检查HTML文件所在的本地文件是否存在。它必须是JavaScript。永远不会禁用JavaScript。 jQuery不好但可以做到。 顺便说一句,我正在为Mac制作一个钛应用程序,所以我正在寻找一种方法来保护我的文件免受点击“显示包内容”的人的影响。     
已邀请:
你的问题很模糊,所以根据你真正想要实现的目标,有多种可能的答案。 如果您正在开发我正在猜测使用Titanium的桌面应用程序,那么您可以使用FileSystem模块的getFile来获取文件对象,然后使用exists方法检查它是否存在。 以下是从Appcelerator网站获取的示例:
var homeDir = Titanium.Filesystem.getUserDirectory();
var mySampleFile = Titanium.Filesystem.getFile(homeDir, 'sample.txt');

if (mySampleFile.exists()) {
    alert('A file called sample.txt already exists in your home directory.');
    ...
}
检查getFile方法参考文档 和存在方法参考文档 对于那些认为他在询问通常的Web开发情况的人来说,那么这就是我给出的两个答案: 1)您想检查服务器端文件是否存在。 在这种情况下,您可以使用ajax请求尝试获取文件并对收到的答案做出反应。但请注意,您只能检查Web服务器公开的文件。一个更好的方法是编写一个服务器端脚本(例如,php)来为你做检查,给定一个文件名并通过ajax调用该脚本。另外,请注意,如果您不够小心,可以在应用程序/服务器中轻松创建安全漏洞。 2)您要检查是否存在客户端文件。 在这种情况下,正如其他人所指出的那样,出于安全原因不允许这样做(虽然IE过去通过ActiveX和Scripting.FileSystemObject类允许这样做)并且它很好(没人希望你能够通过他们的文件),所以忘记这一点。     
由于'Kranu'有用地建议'与文件系统的唯一交互是加载js文件。 。 。',这表明通过错误检查这样做至少会告诉你文件是否不存在 - 这可能足以满足您的目的? 从本地计算机,您可以通过尝试将其作为外部脚本加载然后检查错误来检查文件是否不存在。例如:
<span>File exists? </span>
<SCRIPT>
    function get_error(x){
        document.getElementsByTagName('span')[0].innerHTML+=x+" does not exist.";
    }
    url="   (put your path/file name in here)    ";
    url+="?"+new Date().getTime()+Math.floor(Math.random()*1000000);
    var el=document.createElement('script');
    el.id="123";
    el.onerror=function(){if(el.onerror)get_error(this.id)}
    el.src=url;
    document.body.appendChild(el);
</SCRIPT>
一些笔记...... 将一些随机数据附加到文件名(url + =“?”+新日期等),以便浏览器缓存不会提供旧的结果。 如果你在循环中使用它,设置一个唯一的元素id(el.id =),以便get_error函数可以引用正确的项目。 设置onerror(el.onerror = function)行有点复杂,因为需要它来调用get_error函数并传递el.id - 如果只是设置了对函数的正常引用(例如:el.onerror = get_error),那么没有el.id参数可以传递。 请记住,这只会检查文件是否不存在。     
你可以用它
function LinkCheck(url)
{
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}
    
Javascript无法访问文件系统并检查是否存在。与文件系统的唯一交互是加载js文件和图像(png / gif / etc)。 Javascript不是这个任务     
幸运的是,由于安全原因,使用标准JS访问客户端文件系统是不可能的。但是存在一些专有解决方案(如Microsoft的IE-only ActiveX组件)。     
如果你想用javascript检查文件是否存在那么没有,据我所知,由于安全原因,javascript无法访问文件系统。 但至于我,你还想做什么......     
替代: 您可以使用“隐藏”的applet元素,该元素使用特权操作对象实现此存在检查,并通过以下方式覆盖您的run方法:
File file = new File(yourPath);
return file.exists();
    
我发现这样做的一种方法是创建一个img标记并将src属性设置为您要查找的文件。 img元素的onload或onerror将根据文件是否存在触发。您无法使用此方法加载任何数据,但您可以确定是否存在特定文件。     
试试这个:
window.onclick=(function(){
  try {
    var file = window.open("file://mnt/sdcard/download/Click.ogg");
    setTimeout('file.close()', 100);
    setTimeout("alert('Audio file found. Have a nice day!');", 101);
  } catch(err) {
    var wantstodl=confirm("Warning:n the file, Click.ogg is not found.n do you want to download it?n "+err.message);
    if (wantstodl) {
      window.open("https://www.dropbox.com/s/qs9v6g2vru32xoe/Click.ogg?dl=1"); //downloads the audio file
    }
  }
});
    

要回复问题请先登录注册