如何检查文件是否存在于jQuery或纯JavaScript中?

如何检查我的服务器上的文件是否存在于jQuery或纯JavaScript中?

使用jQuery:

$.ajax({ url:'http://www.example.com/somefile.ext', type:'HEAD', error: function() { //file not exists }, success: function() { //file exists } }); 

编辑:

这里是检查404状态的代码,不使用jQuery

 function UrlExists(url) { var http = new XMLHttpRequest(); http.open('HEAD', url, false); http.send(); return http.status!=404; } 

小的变化,它可以检查状态HTTP状态代码200(成功),而是。

一个类似的和更新的方法。

 $.get(url) .done(function() { // exists code }).fail(function() { // not exists code }) 

这适用于我:

 function ImageExist(url) { var img = new Image(); img.src = url; return img.height != 0; } 

我用这个脚本添加替代图像

 function imgError() { alert('The image could not be loaded.'); } 

HTML:

 <img src="image.gif" onerror="imgError()" /> 

http://wap.w3schools.com/jsref/event_onerror.asp

只要你在相同的域上testing文件,这应该工作:

 function fileExists(url) { if(url){ var req = new XMLHttpRequest(); req.open('GET', url, false); req.send(); return req.status==200; } else { return false; } } 

请注意,这个例子是使用GET请求,除了获取标题(你需要检查天气文件是否存在),获取整个文件。 如果文件足够大,则此方法可能需要一段时间才能完成。

更好的方法是改变这一行: req.open('GET', url, false); req.open('HEAD', url, false);

当试图运行这个问题的答案时,我得到了跨域权限问题,所以我去了:

 function UrlExists(url) { $('<img src="'+ url +'">').load(function() { return true; }).bind('error', function() { return false; }); } 

这似乎很好,希望这可以帮助别人!

下面是如何做ES7的方法,如果你使用的是Babel transpiler或者Typescript 2:

 async function isUrlFound(url) { try { const response = await fetch(url, { method: 'HEAD', cache: 'no-cache' }); return response.status === 200; } catch(error) { // console.log(error); return false; } } 

然后在你的其他async范围内,你可以很容易地检查url是否存在:

 const isValidUrl = await isUrlFound('http://www.example.com/somefile.ext'); console.log(isValidUrl); // true || false 

你需要做的是发送一个请求到服务器进行检查,然后把结果发回给你。

你想与哪种types的服务器通信? 您可能需要编写一个servlets来响应请求。

对于客户端计算机来说,这可以通过

 try { var myObject, f; myObject = new ActiveXObject("Scripting.FileSystemObject"); f = myObject.GetFile("C:\\img.txt"); f.Move("E:\\jarvis\\Images\\"); } catch(err) { alert("file does not exist") } 

这是我的程序将文件传输到特定的位置,并显示警报,如果它不存在

首先创build该function

 $.UrlExists = function(url) { var http = new XMLHttpRequest(); http.open('HEAD', url, false); http.send(); return http.status!=404; } 

这并没有解决OP的问题,但是对于任何从数据库返回结果的人来说:这是我用过的一个简单的方法。

如果用户没有上传头像, avatar字段将是NULL ,所以我会从img目录中插入一个默认的头像图片。

 function getAvatar(avatar) { if(avatar == null) { return '/img/avatar.jpg'; } else { return '/avi/' + avatar; } } 

然后

 <img src="' + getAvatar(data.user.avatar) + '" alt=""> 

JavaScript函数检查文件是否存在:

 function doesFileExist(urlToFile) { var xhr = new XMLHttpRequest(); xhr.open('HEAD', urlToFile, false); xhr.send(); if (xhr.status == "404") { console.log("File doesn't exist"); return false; } else { console.log("File exists"); return true; } } 

我使用这个脚本来检查一个文件是否存在(也可以处理跨源问题):

 $.ajax(url, { method: 'GET', dataType: 'jsonp' }) .done(function(response) { // exists code }).fail(function(response) { // doesnt exist }) 

请注意,当被检查的文件不包含JSON时,会引发以下语法错误。

未捕获的SyntaxError:意外的标记<

它适用于我,使用iframe忽略浏览器显示GET错误消息

  var imgFrame = $('<iframe><img src="' + path + '" /></iframe>'); if ($(imgFrame).find('img').attr('width') > 0) { // do something } else { // do something } 

asynchronous调用来查看文件是否存在是更好的方法,因为它不会通过等待来自服务器的响应来降低用户体验。 如果你.open的第三个参数设置为false(就像在上面的很多例子中,例如http.open('HEAD', url, false); ),这是一个同步调用,你会得到一个警告在浏览器控制台中。

更好的方法是:

 function fetchStatus( address ) { var client = new XMLHttpRequest(); client.onload = function() { // in case of network errors this might not give reliable results returnStatus( this.status ); } client.open( "HEAD", address, true ); client.send(); } function returnStatus( status ) { if ( status === 200 ) { console.log( 'file exists!' ); } else { console.log( 'file does not exist! status: ' + status ); } } 

来源: https : //xhr.spec.whatwg.org/

这是对已被接受的答案的修改,但是我不能从答案中得到我所需的东西,而且必须testing这个工作,因为这是一个预感,所以我把我的解决scheme放在这里。

我们需要validation本地文件是否存在,并且只允许打开文件(PDF)。 如果您省略网站的URL,浏览器将自动确定主机名 – 使其在本地主机和服务器上工作:

 $.ajax({ url: 'YourFolderOnWebsite/' + SomeDynamicVariable + '.pdf', type: 'HEAD', error: function () { //file not exists alert('PDF does not exist'); }, success: function () { //file exists window.open('YourFolderOnWebsite/' + SomeDynamicVariable + '.pdf', "_blank", "fullscreen=yes"); } });