Файловый API в контексте браузера в основном построен на примере использования «чтение». Запись файлов на клиентский компьютер является предметом проблем безопасности, и на стороне клиента нет бесшовного API для этого.
Итак, подход, который вы можете использовать, здесь: BLOB-объекты с использованием Ioni c Storage (localForage поддерживает хранение BLOB-объектов в indexeddb)
при запуске приложения проверьте сохраненные BLOB-объекты и восстановите локальный кеш, запустив forEach l oop и создайте blobUrls create condition для чтения ваших элементов img из локального blobUrl, если приложение отключено
Направленно, что-то вроде этого ниже будет вашей основной функцией:
async cacheImagesLocally() {
// not sure what your products array looks like, but just for example here:
const products = [{
image: "image0",
imageUrl: "someURL"
}];
// this one should probably be a property in your class:
const localBlobUrlsCache = [];
for (const product of products) {
let localBlob = await this.storage.get(product.image);
if (!localBlob) {
const productImageUrl = SERVER_URL + product.imageUrl;
const fileName = product.image;
localBlob = await this.http.sendRequest(productImageUrl, {
method: 'download',
filePath: this.directoryPath + fileName,
responseType: 'blob'
});
};
localBlobUrlsCache.push({image: product.image, blobUrl: URL.createObjectURL(localBlob)});
};
};