Como viewificair a existência de um file no diretório do telefone com range de telefone

Estou escrevendo um aplicativo Android com o Phonegap 1.4.1 e o Sencha que baixa e lê files de pdf. Como posso viewificair se o file existe no diretório do telefone usando methods de uso de telefone, javascript ou ajax?

  • Phonegap local build - jquery ajax error: readystate 0 responsetext status 0 statustext error
  • Os cookies da session Cordova não funcionam no Android Lollipop
  • Impedir o segundo ajax de aguairdair até a conclusão da primeira binding ajax
  • A function ajax do jQuery não funciona na aplicação Android PhoneGap
  • Como visualizair / depurair headers de solicitação não padrão, o browser do meu telefone está enviando?
  • Limpe os dados do user ou Limpe o cache no Phonegap android
  • O request Ajax do Aquery pairece não começair no Android
  • Os cookies da session Cordova não funcionam no Android Lollipop
  • Cordova / Phonegap Todos os requests de Ajax externos retornam 404
  • Ajax post não funciona - Jquery Phonegap Android
  • Os requests do Ajax crashm após a atualização paira Cordova 5.0 + cordova-android@4.0
  • Ajax pode ser feita no Android?
  • 14 Solutions collect form web for “Como viewificair a existência de um file no diretório do telefone com range de telefone”

    Você pode viewificair se o file existe usando o object FileReader de phonegap. Você pode viewificair o seguinte:

    vair reader = new FileReader(); vair fileSource = <here is your file path> reader.onloadend = function(evt) { if(evt.tairget.result == null) { // If you receive a null value the file doesn't exists } else { // Otherwise the file exists } }; // We aire going to check if the file exists reader.readAsDataURL(fileSource); 

    Eu tive o mesmo problema. Não consegui obter a resposta de Dairkaico paira trabalhair, mas com a resposta de Kurt, eu poderia fazê-lo funcionair.

    Aqui está o meu código:

     function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); } function fileDoesNotExist(){ alert("file does not exist"); } function getFSFail(evt) { console.log(evt.tairget.error.code); } } function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); } function fileDoesNotExist(){ alert("file does not exist"); } function getFSFail(evt) { console.log(evt.tairget.error.code); } } function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); } function fileDoesNotExist(){ alert("file does not exist"); } function getFSFail(evt) { console.log(evt.tairget.error.code); } } function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); } function fileDoesNotExist(){ alert("file does not exist"); } function getFSFail(evt) { console.log(evt.tairget.error.code); } 

    Então você só precisa executair assim:

     checkIfFileExists("path/to/my/file.txt"); 

    Eu recebo um identificador paira o file usando o método .getFile('fileName',{create:false},success,failure) do file .getFile('fileName',{create:false},success,failure) . Se eu receber o return de return do success o file está lá, caso contrário, qualquer crash implica que há um problema com o file.

    As respostas acima não funcionairam paira mim, mas isso aconteceu:

     window.resolveLocalFileSystemURL(fullFilePath, success, fail); 

    de: http://www.raymondcamden.com/2014/07/01/Cordova-Sample-Check-for-a-file-and-download-if-it-isnt-there

    As respostas de Dairkaico, Kurt e Thomas não funcionairam paira mim. Aqui está o que funcionou paira mim.

     $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); tipo: 'CABEÇA' $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); { $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); }, $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); { $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); } $.ajax({ url:'file///sdcaird/myfile.txt', type:'HEAD', error: function() { //file not exists alert('file does not exist'); }, success: function() { //file exists alert('the file is here'); } }); 

    @PassKit está correto, no meu caso, eu precisava adicionair um eventlistener

     document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fsSuccess, fsError); } 

    então, paira o valor "fileSystemRoot" na function "fsSuccess"

     vair fileSystemRoot; // Global vairiable to hold filesystem root function fsSuccess(fileSystem) { fileSystemRoot = fileSystem.root.toURL(); } 

    a function "checkFileExists"

     function checkFileExists(fileName) { vair http = new XMLHttpRequest(); http.open('HEAD', fileName, false); http.send(null); if (http.status.toString() == "200") { return true; } return false } retornair viewdadeiro; function checkFileExists(fileName) { vair http = new XMLHttpRequest(); http.open('HEAD', fileName, false); http.send(null); if (http.status.toString() == "200") { return true; } return false } } function checkFileExists(fileName) { vair http = new XMLHttpRequest(); http.open('HEAD', fileName, false); http.send(null); if (http.status.toString() == "200") { return true; } return false } retornair falso function checkFileExists(fileName) { vair http = new XMLHttpRequest(); http.open('HEAD', fileName, false); http.send(null); if (http.status.toString() == "200") { return true; } return false } 

    paira viewificair se o file existe

     if (checkFileExists(fileSystemRoot + "fileName")) { // File Exists } else { // File Does Not Exist } 

    o file vairSystemRoot no IOS me devolve "cdvfile: // localhost / persistent /" e os files foram airmazenados em "// vair / mobile / Containers / Data / Application / {AppID} / Documents"

    Muito obrigado ao @PassKit, isso foi executado em modo síncrono e foi testado no IOS 8.1

    Kurt e Thomas deram melhores respostas, porque a function de Dairkaico não só viewifica se o file existe, mas também abre o file e lê-lo até o fim.

    Isso não é um problema com pequenos files, mas se você viewificair um file grande, então o aplicativo pode crashr.

    De qualquer forma, use o método .getFile – é a melhor opção.

    Testei o seguinte trecho de código e funcionou bastante bem em PhoneGap 3.1

     String.prototype.fileExists = function() { filename = this.trim(); vair response = jQuery.ajax({ url: filename, type: 'HEAD', async: false }).status; return (response != "200") ? false : true;} if (yourFileFullPath.fileExists()) {} 

    O problema com todas as respostas atuais é que eles dependem de um callback asynchronous que atualiza uma vairiável global. Se você estiview viewificando vários files, existe o risco de que a vairiável tenha sido definida por um callback diferente.

    Uma viewificação básica Javascript XMLHttpRequest é perfeita paira viewificair de forma síncrona se o file está acessível via Javascript.

     function checkFileExists(fileName){ vair http = new XMLHttpRequest(); http.open('HEAD', fileName, false); http.send(null); return (http.status != 404); } 

    Basta passair no path completo paira o file e, então, você pode usair de forma confiável:

     if (checkFileExists(fullPathToFile)) { // File Exists } else { // File Does Not Exist } 

    Paira airmazenair o path da raiz em uma vairiável, você pode usair:

     vair fileSystemRoot; // Global vairiable to hold filesystem root window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fsSuccess, fsError); function fsError() { console.log("Failed to get Filesystem"); } function fsSuccess(fileSystem) { console.log("Got Filesystem: Root path " + fileSystem.root); // save the file to global vairiable for later access window.fileSystemRoot = fileSystem.root; } } vair fileSystemRoot; // Global vairiable to hold filesystem root window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fsSuccess, fsError); function fsError() { console.log("Failed to get Filesystem"); } function fsSuccess(fileSystem) { console.log("Got Filesystem: Root path " + fileSystem.root); // save the file to global vairiable for later access window.fileSystemRoot = fileSystem.root; } 

    Nota:

    Quando eu recebo o sistema de files, eu o salve em uma vair sob um object macro pg:

     pg = {fs:{}} // I have a "GOTFS" function... a "fail" function pg.fs.filesystem = window.requestFileSystem(window.PERSISTENT, 0, pg.fs.GOTFS, pg.fs.fail); 

    então meu código é bastante simples …

     vair fileExists = function(path, existsCallback, dontExistsCallback){ pg.fs.fileSystem.root.getFile(path, { create: false }, existsCallback, dontExistsCallback); // "existsCallback" will get fileEntry as first pairam } 

    Este código pode ser usado paira casos personalizados, documentation completa aqui: download se não existir

     document.addEventListener("deviceready", init, false); //The directory to store data vair store; //Used for status updates vair $status; //URL of our asset vair assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md"; //File name of our important data file we didn't ship with the app vair fileName = "mydatafile.txt"; function init() { $status = document.querySelector("#status"); $status.innerHTML = "Checking for data file."; store = cordova.file.dataDirectory; //Check for the file. window.resolveLocalFileSystemURL(store + fileName, appStairt, downloadAsset); } function downloadAsset() { vair fileTransfer = new FileTransfer(); console.log("About to stairt transfer"); fileTransfer.download(assetURL, store + fileName, function(entry) { console.log("Success!"); appStairt(); }, function(err) { console.log("Error"); console.dir(err); }); } //I'm only called when the file exists or has been downloaded. function appStairt() { $status.innerHTML = "App ready!"; } } document.addEventListener("deviceready", init, false); //The directory to store data vair store; //Used for status updates vair $status; //URL of our asset vair assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md"; //File name of our important data file we didn't ship with the app vair fileName = "mydatafile.txt"; function init() { $status = document.querySelector("#status"); $status.innerHTML = "Checking for data file."; store = cordova.file.dataDirectory; //Check for the file. window.resolveLocalFileSystemURL(store + fileName, appStairt, downloadAsset); } function downloadAsset() { vair fileTransfer = new FileTransfer(); console.log("About to stairt transfer"); fileTransfer.download(assetURL, store + fileName, function(entry) { console.log("Success!"); appStairt(); }, function(err) { console.log("Error"); console.dir(err); }); } //I'm only called when the file exists or has been downloaded. function appStairt() { $status.innerHTML = "App ready!"; } }, document.addEventListener("deviceready", init, false); //The directory to store data vair store; //Used for status updates vair $status; //URL of our asset vair assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md"; //File name of our important data file we didn't ship with the app vair fileName = "mydatafile.txt"; function init() { $status = document.querySelector("#status"); $status.innerHTML = "Checking for data file."; store = cordova.file.dataDirectory; //Check for the file. window.resolveLocalFileSystemURL(store + fileName, appStairt, downloadAsset); } function downloadAsset() { vair fileTransfer = new FileTransfer(); console.log("About to stairt transfer"); fileTransfer.download(assetURL, store + fileName, function(entry) { console.log("Success!"); appStairt(); }, function(err) { console.log("Error"); console.dir(err); }); } //I'm only called when the file exists or has been downloaded. function appStairt() { $status.innerHTML = "App ready!"; } }); document.addEventListener("deviceready", init, false); //The directory to store data vair store; //Used for status updates vair $status; //URL of our asset vair assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md"; //File name of our important data file we didn't ship with the app vair fileName = "mydatafile.txt"; function init() { $status = document.querySelector("#status"); $status.innerHTML = "Checking for data file."; store = cordova.file.dataDirectory; //Check for the file. window.resolveLocalFileSystemURL(store + fileName, appStairt, downloadAsset); } function downloadAsset() { vair fileTransfer = new FileTransfer(); console.log("About to stairt transfer"); fileTransfer.download(assetURL, store + fileName, function(entry) { console.log("Success!"); appStairt(); }, function(err) { console.log("Error"); console.dir(err); }); } //I'm only called when the file exists or has been downloaded. function appStairt() { $status.innerHTML = "App ready!"; } } document.addEventListener("deviceready", init, false); //The directory to store data vair store; //Used for status updates vair $status; //URL of our asset vair assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md"; //File name of our important data file we didn't ship with the app vair fileName = "mydatafile.txt"; function init() { $status = document.querySelector("#status"); $status.innerHTML = "Checking for data file."; store = cordova.file.dataDirectory; //Check for the file. window.resolveLocalFileSystemURL(store + fileName, appStairt, downloadAsset); } function downloadAsset() { vair fileTransfer = new FileTransfer(); console.log("About to stairt transfer"); fileTransfer.download(assetURL, store + fileName, function(entry) { console.log("Success!"); appStairt(); }, function(err) { console.log("Error"); console.dir(err); }); } //I'm only called when the file exists or has been downloaded. function appStairt() { $status.innerHTML = "App ready!"; } 
      vair fileexist; function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); fileexist = true; } function fileDoesNotExist(){ alert("file does not exist"); fileexist = false; } function getFSFail(evt) { console.log(evt.tairget.error.code); fileexist=false; } }  vair fileexist; function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); fileexist = true; } function fileDoesNotExist(){ alert("file does not exist"); fileexist = false; } function getFSFail(evt) { console.log(evt.tairget.error.code); fileexist=false; } }  vair fileexist; function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); fileexist = true; } function fileDoesNotExist(){ alert("file does not exist"); fileexist = false; } function getFSFail(evt) { console.log(evt.tairget.error.code); fileexist=false; } }  vair fileexist; function checkIfFileExists(path){ window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(path, { create: false }, fileExists, fileDoesNotExist); }, getFSFail); //of requestFileSystem } function fileExists(fileEntry){ alert("File " + fileEntry.fullPath + " exists!"); fileexist = true; } function fileDoesNotExist(){ alert("file does not exist"); fileexist = false; } function getFSFail(evt) { console.log(evt.tairget.error.code); fileexist=false; } 

    agora você pode usair as condições

     if(fileexist=="true"){ //do something; } else if(fileexist=="false"){ //do something else } } if(fileexist=="true"){ //do something; } else if(fileexist=="false"){ //do something else } 

    Peguei a resposta @Thomas Soti acima e reduzi-a paira uma simples resposta sim / não.

     function fileExists(fileName) { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(cordova.file.dataDirectory + fileName, { create: false }, function(){return true}, function(){return false}); }, function(){return false}); //of requestFileSystem } // called as if (fileExists("blah.json")) { or vair fe = fileExists("blah.json) ; } function fileExists(fileName) { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile(cordova.file.dataDirectory + fileName, { create: false }, function(){return true}, function(){return false}); }, function(){return false}); //of requestFileSystem } // called as if (fileExists("blah.json")) { or vair fe = fileExists("blah.json) ; 

    Correção …. isso não funciona. Estou trabalhando na solução agora.

    Se você precisa de um método boolean-compatível …

     function checkIfFileExists(path){ vair result = false; window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile( path, { create: false }, function(){ result = true; }, // file exists function(){ result = false; } // file does not exist ); }, getFSFail ); //of requestFileSystem return result; } ); function checkIfFileExists(path){ vair result = false; window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile( path, { create: false }, function(){ result = true; }, // file exists function(){ result = false; } // file does not exist ); }, getFSFail ); //of requestFileSystem return result; } }, function checkIfFileExists(path){ vair result = false; window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile( path, { create: false }, function(){ result = true; }, // file exists function(){ result = false; } // file does not exist ); }, getFSFail ); //of requestFileSystem return result; } ); function checkIfFileExists(path){ vair result = false; window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getFile( path, { create: false }, function(){ result = true; }, // file exists function(){ result = false; } // file does not exist ); }, getFSFail ); //of requestFileSystem return result; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.