2017-02-15 1 views
0

Ich habe diese App, wo ich Bild oder wählen Sie es aus der Galerie dann verschieben Sie es in das Dateisystem, speichern Sie den Imgpath für das Bild in SQLite db und zeigen Sie es an, alles funktioniert so gut, jetzt, wenn ich den imgpath von der sqlite db lösche, möchte ich es gleichzeitig aus dem Dateisystem löschen.Cordova lösche Dateien nach sqlite lösche es

$scope.deleteImg = function(imgPath) { 


    if (!imgPath) { 
     console.error("No fileName specified. File could not be deleted."); 
     return false; 
    } else { 


     $cordovaFile.checkFile(cordova.file.externalRootDirectory, imgPath.id).then(function() { 
      $cordovaFile.removeFile(cordova.file.externalRootDirectory, imgPath.id).then(function(result) { 
       console.log("image '" + imgPath + "' deleted", JSON.stringify(result)); 
      }, function(err) { 
       console.error("Failed to delete file '" + imgPath.id + "'", JSON.stringify(err)); 

      }); 
     }, function(err) { 
      console.log("image '" + imgPath.id + "' does not exist", JSON.stringify(err)); 
     }); 

    } 

    $scope.add = function(path) { 
        
      console.log("I AM ADDING TO DB WITH PATH: " + path);    

         
      $cordovaSQLite.execute(db, "INSERT INTO imageTable (image) VALUES(?)", [path]).then(
       function(res) { 
        console.log("I AM DONE ADDING TO DB");    
       } 
      );                 


             
     }, 
     function(e) {         
      alert(e);       
     }; 



         

       
    $scope.ShowAllData = function() { 
     console.log("I AM READING FROM DB");    
     $scope.images = [];              
     $cordovaSQLite.execute(db,"SELECT * FROM imageTable ORDER BY id DESC"  ).then(        function(res) { 

      console.log("I FINISHED READING FROM DB");    

                 
      if (res.rows.length > 0) {             
       for (var i = 0; i < res.rows.length; i++) {               
        $scope.images.push({ 
         id: res.rows.item(i).id, 
         image: res.rows.item(i).image 

                        
        }); 

       }           
      }  
      return $scope.images; 

               
     },         function(error) {           
      alert(error);         
     }      ); 

          
    }   

    $scope.getImgIDbyName = function(name) { 

     console.log('[getImgIDbyName] - get image with name: ' + name); 
     var sql = "SELECT * FROM imageTable WHERE image = '" + name + "';"; 
     console.log(sql); 
     $cordovaSQLite.execute(db, 
      sql 
     ).then(
      function(res) { 
       if (res.rows.length > 0) { 
        if (res.rows.length > 1) { 
         console.log('[getImgIDbyName] - OOPS more than 1 image returned!!!! ' + name); 
        } else { 
         $scope.delete(res.rows.item(0).id); 
         $scope.deleteImg(imagePath.id); 
        } 
       } else { 
        console.log('[getImgIDbyName] - no image found with name: ' + name); 
       } 
      }, 
      function(error) { 
       alert("error occured: " + error.message); 
      } 
     ); 



    } 

Antwort

1

Erste Download-Plugin - cordova Plugin cordova-Plugin-Datei

hinzufügen und führen Sie dann den folgenden Code

var path = cordova.file.applicationDirectory + '/www/res/image'; // get the absolute path 
var filename = "image.png"; 

window.resolveLocalFileSystemURL(path, function(dir) { 
    dir.getFile(filename, {create:false}, function(fileEntry) { 
       fileEntry.remove(function(){ 
        // The file has been removed succesfully 
       },function(error){ 
        // Error deleting the file 
       },function(){ 
       // The file doesn't exist 
       }); 
    }); 
}); 

Dies ist die komplette Dokumentation: https://github.com/apache/cordova-plugin-file/#where-to-store-files

+0

Vielen Dank für Ihre Hilfe, Ich habe bereits das Plugin installiert und ich verwende es, um das Bild in das Dateisystem zu speichern, können Sie meinen vollständigen Code hier http://stackoverflow.com/questions/42109744/how-to-sa ve-image-pfad-in-sqlite-cordova –

+0

wie kann ich den imgpath löschen aus dem dateisystem, nachdem es aus der db gelöscht, das ist, wo ich kämpfe, muss ich die gleiche id deleteImg für filesystem übergeben –

+0

Lassen Sie mich einen Blick auf Dein Code hier. Also, hast du Probleme, diese ID/Dateinamen von SQLite zu bekommen? – digit

Verwandte Themen