В настоящее время я пытаюсь реализовать функцию чата в Ionic 4, которая включает в себя возможность прикреплять файлы. Для этого я использую плагин FileChooser. Затем я хотел бы получить закодированное в base64 содержимое файла через URI, предоставленный FileChooser. Однако я не могу заставить вызов readAsDataURL работать.
Я уже пытался использовать плагин Base64, но он всегда возвращает пустую строку без контекста для того, что пошло не так. Я также попробовал несколько способов предоставления / разбиения пути, но либо файл не был найден вообще, либо появилась та же проблема, что и в текущей версии. Я также проверил свой AndroidManifest.xml, и он содержит
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
так же как
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Этот код я использую, чтобы прочитать содержимое выбранного URI:
handleUri (uri : string) {
let $this = this;
console.log("URI: "+uri);
$this.file.resolveLocalFilesystemUrl(uri).then(
(entry) => {
let fileEntry = <FileEntry> entry;
fileEntry.file(
(file) => {
let path : string = fileEntry.toURL();
let mimeType : string = file.type
let dirPath : string = path.substr(0,path.lastIndexOf('/') + 1);
let fileName : string = path.substr(path.lastIndexOf('/') + 1);
console.log("DirPath: "+dirPath);
console.log("FileName: "+fileName);
$this.file.checkFile(dirPath,fileName).then(
(exists) => {
console.log("File does "+( exists ? "" : "not ")+ "exist");
}
);
$this.file.readAsDataURL(dirPath,fileName).then(
(string) => {
console.log("ReadAsDataURL: "+string);
},
(error) => {
console.log("ReadAsDataURL failed: "+JSON.stringify(error));
}
);
}
)
},
(error) => {
console.log(JSON.stringify(error));
}
)
}
Можно подумать, что этих разрешений будет достаточно для чтения существующего файла.
Какие еще разрешения мне нужно предоставить?