Использование cordova-plugin-file для копирования базы данных SQLite cordova-sqlite-storage в Windows 10
Мне нужна помощь с файлом cordova-plugin-file для резервного копирования базы данных, используемой cordova-sqlite-storage в приложении Windows 10. Мой код отлично работает на платформе Android. База данных может быть скопирована в обоих направлениях (резервное копирование и восстановление). База данных, используемая приложением, выглядит следующим образом:
C: \ Users \ MyUser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db
Приложение пытается использовать это местоположение, чтобы найти файл, но он не найден:
мс-appx:///databases/sample.db
Как получить правильное местоположение для Windows, чтобы скопировать файл?
Это код, который я использую для копирования файла:
backupDatabase (имя: строка): 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);
});
});
1 ответ
Приложение пытается использовать это местоположение, чтобы найти файл, но он не найден:
мс-appx:///databases/sample.db
Как получить правильное местоположение для Windows, чтобы скопировать файл?
Вы используете неправильную схему ms-appx:///
относится к месту установки пакета.
За C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db
вам нужно использовать ms-appdata:///local/sample.db
,