我希望检查位于HTML文件位置的本地文件是否存在。必须使用JavaScript。 JavaScript永远不会被禁用。jQuery不是最好的选择,但可以使用。
顺便说一句,我正在为Mac制作钛应用程序,因此我正在寻找一种保护免受那些点击“显示包内容”的人的文件的方法。
我希望检查位于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.');
...
}
对于那些认为他正在问一个普通的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="c:\\Windows\\Web\\js.js";
,无论文件是否存在,它总是返回123不存在。
我还尝试了:url="file://c:\\Windows\\Web\\js.js";
,结果也是一样的。 - Kevin Feganfunction LinkCheck(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
var x=LinkCheck("c:\\Windows\\Web\\Wallpaper\\img1.jpg");
。然后测试x的值:x ? alert("文件存在") : alert("文件不存在");
或者 if (x){ alert("文件存在"); } else { alert("文件不存在"); }
。不幸的是,我在我的系统上尝试了这个方法,在http.open('HEAD', url, false);
这一行之后失败了。 - Kevin Feganvar x=LinkCheck("file://c:\\Windows\\Web\\Wallpaper\\img1.jpg");
,但在 http.send();
后失败了。在两种情况下,“失败”的原因是它不能从对 LinkCheck()
的调用中返回。 - Kevin Feganopen
语句中,false
表示同步操作。我刚发现这个:注意:从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,在主线程上进行的同步请求已被弃用,因为对用户体验有负面影响。
使用XMLHttpRequest - Kevin FeganJavascript无法访问文件系统并检查其是否存在。与文件系统的唯一交互是加载js文件和图像(png / gif等)。
Javascript不适合这项任务。
如果你想使用JavaScript检查文件是否存在,那么不行,据我所知,由于安全原因,JavaScript无法访问文件系统。
但是,对于我来说,你的意图还不够清楚。
幸运的是,出于安全原因,使用标准JS无法访问客户端文件系统。不过有一些专有解决方案存在(例如微软的仅限于IE的ActiveX组件)。
File file = new File(yourPath);
return file.exists();
const path = './file.txt'
fs.access(path, fs.F_OK, (err) => {
if (err) {
console.error(err)
return
}
//file exists
})