Я пытаюсь отображать изображения, которые можно редактировать на сервере, но они должны быть доступны и в автономном режиме. Для достижения этой цели я загружаю эти изображения следующим способом (который является единственным, который работал для меня)
download_save_picture(picture_url) {
let splited_url = picture_url.split('/');
var filename = splited_url[splited_url.length - 1];
var config = { responseType: 'blob' as 'blob' };
this.httpClient.get(picture_url, config).subscribe(
data => {
this.file.writeFile(this.file.dataDirectory, filename, data, { replace: true });
},
err => console.error(err),
() => { }
);
}
И тогда я могу проверить, что эти файлы существуют и что их вес также отличается от 0, поэтому я думаю, что все верно до этого момента.
this.file.checkFile(this.file.dataDirectory, filename)
.then(() => {
alert("File Exist!!!"); // I always enter here
})
.catch((err) => {
alert("ERR : " + err);
});
this.file.resolveLocalFilesystemUrl(this.file.dataDirectory + filename).then((entry: any)=>{
entry.getMetadata((metadata) => {
alert("SIZE: " + metadata.size);
})
}).catch((error)=>{
alert(error);
});
Итак, следующий шаг - отобразить изображение, которое находится в пути this.file.dataDirectory + filename
, как я могу это сделать?
После поиска решения и чтения я понимаю, что должен:
Загрузка двоичного содержимого файла.
Преобразовать этот двоичный контент в базу 64.
Затем отобразите его с помощью src="data:image/jpeg;base64,"+{{image_in_base64}};
Но до сих пор я не мог выполнить шаги 1 (загрузить содержимое файла) и 2 (преобразовать его в базу 64), как я могу это сделать?