我想检查HTML文件所在的本地文件是否存在。它必须是JavaScript。永远不会禁用JavaScript。 jQuery不好但可以做到。
顺便说一句,我正在为Mac制作一款钛金属应用程序,所以我正在寻找一种方法来保护我的文件免受点击“显示包装内容”的人的侵害。
答案 0 :(得分:15)
你的问题含糊不清,所以根据你真正想要达到的目标,有多种可能的答案。
如果您正在开发我正在猜测使用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 method reference documentation
exists method reference documentation
对于那些认为他在询问通常的Web开发情况的人来说,那就是我给出的两个答案:
1)您要检查服务器端文件是否存在。 在这种情况下,您可以使用ajax请求尝试获取文件并对收到的答案做出反应。但请注意,您只能检查Web服务器公开的文件。一个更好的方法是编写一个服务器端脚本(例如,php)来为你做检查,给定一个文件名并通过ajax调用该脚本。另外,请注意,如果您不够小心,可以在应用程序/服务器中轻松创建安全漏洞。
2)您要检查是否存在客户端文件。 在这种情况下,正如其他人所指出的那样,出于安全原因不允许这样做(虽然IE过去通过ActiveX和Scripting.FileSystemObject类允许这样做)并且它很好(没人希望你能够通过他们的文件),所以忘记这一点。
答案 1 :(得分: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>
一些说明......
答案 2 :(得分:8)
您可以使用此
function LinkCheck(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
答案 3 :(得分:4)
Javascript无法访问文件系统并检查是否存在。与文件系统的唯一交互是加载js文件和图像(png / gif / etc)。
Javascript不是此
的任务答案 4 :(得分:3)
如果你想用javascript检查文件是否存在那么没有,据我所知,由于安全原因,javascript无法访问文件系统。 但对我而言,你还想做什么......
答案 5 :(得分:3)
幸运的是,出于安全原因,使用标准JS访问客户端文件系统是不可能的。但是存在一些专有解决方案(如Microsoft的IE-only ActiveX组件)。
答案 6 :(得分:2)
替代方案: 您可以使用“隐藏”的applet元素,该元素使用特权操作对象实现此存在检查,并通过以下方式覆盖您的run方法:
File file = new File(yourPath);
return file.exists();
答案 7 :(得分:1)
我发现这样做的一种方法是创建一个img标记并将src属性设置为您要查找的文件。 img元素的onload或onerror将根据文件是否存在触发。您无法使用此方法加载任何数据,但您可以确定是否存在特定文件。
答案 8 :(得分:0)
试试这个:
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
}
}
});
答案 9 :(得分:0)
如果您使用Nodejs,则无需外部库,您所需要做的就是导入文件系统模块。随时编辑以下代码: const fs = require('fs')
const path = './file.txt'
fs.access(path, fs.F_OK, (err) => {
if (err) {
console.error(err)
return
}
//file exists
})