0

J'ai besoin d'aide avec cordova-plugin-fichier pour sauvegarder une base de données utilisée par cordova-sqlite-storage dans Windows 10 App. Mon code fonctionne correctement sur la plateforme Android. La base de données peut être copiée dans les deux directions (sauvegarde et restauration). Base de données utilisée par l'application semble être la suivante:Utiliser le fichier cordova-plugin pour copier la base de données SQLite cordova-sqlite-storage sous Windows 10

C: \ Users \ myuser \ AppData \ Local \ Packages \ io.cordova.hellocordova_h35559jr9hy9m \ LocalState \ sample.db

L'application essaie de utiliser cet emplacement pour localiser le fichier, mais il ne se trouve pas:

ms-appx: ///databases/sample.db

Comment puis-je obtenir le bon emplacement pour Windows pour copier le fichier?

Voici le code que j'utilise pour copier le fichier:

BackupDatabase (nom: string): Promise {

return new Promise<boolean>((resolve, reject) => 
{ 
    var fileName: string = window.cordova.file.applicationStorageDirectory + 'databases/' + name; 
    var directoryName: string = window.cordova.file.externalRootDirectory; 

    window.resolveLocalFileSystemURL(fileName, (file: FileEntry) => { 
    console.log('[!] Database exists: ' + fileName); 
    console.log('[!] Storage: ' + directoryName); 
    window.resolveLocalFileSystemURL(directoryName, (directory: DirectoryEntry) => { 
     console.log('[!] Directory: ' + directory.toURL()); 
     directory.getDirectory("Backup", {create: true, exclusive: false}, (directoryBackup: DirectoryEntry) => { 
     console.log('[!] Directory: ' + directoryBackup.toURL()); 
     file.copyTo(directoryBackup, name, (copiedFile: Entry) => { 
      console.log('[!] Copy success'); 
      resolve(true); 
     }, (error: FileError) => { 
      console.log('[!] Copy failed: ' + error.code); 
      reject(error); 
     }); 
     }, (error: FileError) => { 
     console.log('[!] Backup Directory not found: ' + directoryName + 'Backup' + ' errorcode: ' + + error.code); 
     reject(error); 
     }) 
    }, (error: FileError) => { 
     console.log('[!] Directory not found: ' + directoryName + ' errorcode: ' + + error.code); 
     reject(error); 
    }); 
    }, (error: FileError) => { 
     console.log('[!] Database not found: ' + fileName + ' errorcode: ' + + error.code); 
     reject(error); 
    }); 
}); 

Répondre

0

L'application essaie d'utiliser cet emplacement pour localiser le fichier, mais il est introuvable:

ms-appx: ///databases/sample.db

Comment puis-je obtenir le bon emplacement pour Windows pour copier le fichier ? Vous utilisez le mauvais schéma ms-appx:/// se réfère à la package installed location

Pour C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db

vous devez utiliser ms-appdata:///local/sample.db.

+0

window.cordova.file.dataDirectory + 'sample.db'; fonctionne bien! THX :-) –