如何使用JavaScript检查文件是否存在?

时间:2009-11-01 13:00:02

标签: javascript file

如何使用JavaScript检查文件的存在(这是我想在这种情况下检查的xml文件)?

4 个答案:

答案 0 :(得分:5)

如果你正在使用jQuery,你可以尝试加载文件

$.ajax({
  type: "GET",
  url: "/some.xml",
  success: function()
  { /** found! **/},
  error: function(xhr, status, error) {
    if(xhr.status==404)
      { /** not found! **/}
  }
});

如果您不使用jQuery:

function ajaxRequest(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] 
 //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
 if (window.ActiveXObject){ 
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
    //suppress error
   }
  }
 }
 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
  return new XMLHttpRequest()
 else
  return false
}

var myrequest=new ajaxRequest()
myrequest.onreadystatechange=function(){
 if (myrequest.readyState==4){ //if request has completed
  if (myrequest.status==200 || window.location.href.indexOf("http")==-1){ 
    // FOUND!
  }
 }
}

myrequest.open('GET', 'http://blabla.com/somefile.xml', true); 

答案 1 :(得分:4)

如果文件位于为包含javascript的页面提供服务的同一主机上,您可以尝试sending an ajax请求并验证返回的状态代码:

function checkFile(fileUrl) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }

    self.xmlHttpReq.open('HEAD', fileUrl, true);
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            if (self.xmlHttpReq.status == 200) {
                alert('the file exists');
            } else if (self.xmlHttpReq.status == 404) {
                alert('the file does not exist');
            }
        }
    }
    self.xmlHttpReq.send();
}

checkFile('/somefile.xml');

答案 2 :(得分:0)

Javascript实际上没有任何文件处理功能。最好的办法是检查服务器端并将一些上下文发送回客户端。

如果你想获得超级hacky,你可以调用xmlHttpRequest(如果你使用的是jQuery,请查看$.ajax函数)

一旦调用$ .ajax,您就可以使用成功/错误处理程序来确定要执行的操作。如果文件不存在,它应该吐出错误。

这当然不是推荐的方法。

答案 3 :(得分:0)

我没有足够的声誉来发表评论所以请注意,在Anwar Chandra的答案(非jQuery版本)中你最终必须打电话:

myrequest.send();

此外,HEAD方法最好“检查文件是否存在”,因为您不需要从服务器读取整个文件。