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

Jqu*_*ers 15 html javascript security titanium local-files

我想检查HTML文件所在的本地文件是否存在.它必须是JavaScript.永远不会禁用JavaScript.jQuery不好但可以做到.

顺便说一句,我正在为Mac制作一个钛应用程序,所以我正在寻找一种方法来保护我的文件免受点击"显示包内容"的人的影响.

dSe*_*ien 14

你的问题很模糊,所以根据你真正想要实现的目标,有多种可能的答案.

如果您正在开发我正在猜测使用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.');
    ...
}
Run Code Online (Sandbox Code Playgroud)

检查getFile方法参考文档

存在方法参考文档

对于那些认为他在询问通常的Web开发情况的人来说,那么这就是我给出的两个答案:

1)您想检查服务器端文件是否存在.在这种情况下,您可以使用ajax请求尝试获取文件并对收到的答案做出反应.但请注意,您只能检查Web服务器公开的文件.一个更好的方法是编写一个服务器端脚本(例如,php),它会为你做检查,给定一个文件名并通过ajax调用该脚本.另外,请注意,如果您不够小心,可以在应用程序/服务器中轻松创建安全漏洞.

2)您要检查是否存在客户端文件.在这种情况下,正如其他人所指出的那样,出于安全原因不允许这样做(虽然IE过去通过ActiveX和Scripting.FileSystemObject类允许这样做)并且它很好(没人希望你能够通过他们的文件),所以忘记这一点.


Siu*_*ear 10

由于'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>
Run Code Online (Sandbox Code Playgroud)

一些笔记......

  • 将一些随机数据附加到文件名(url + ="?"+新日期等),以便浏览器缓存不会提供旧的结果.
  • 如果你在循环中使用它,则设置一个唯一的元素id(el.id =),以便get_error函数可以引用正确的项目.
  • 设置onerror(el.onerror = function)行有点复杂,因为需要它来调用get_error函数并传递el.id - 如果只是设置了对函数的正常引用(例如:el.onerror = get_error),那么没有el.id参数可以传递.
  • 请记住,这只会检查文件是否不存在.


Jes*_*one 8

你可以用它

function LinkCheck(url)
{
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}
Run Code Online (Sandbox Code Playgroud)


Kra*_*anu 5

JavaScript 无法访问文件系统并检查其是否存在。与文件系统的唯一交互是加载 js 文件和图像(png/gif/等)。

Javascript 不是这个任务的任务