Требования:
- Выбрать изображения: разрешить пользователям выбирать несколько изображений с помощью DocumentPicker.
- Постоянный доступ: получить постоянный URI. или указатель на исходный файл, который остается действительным при перезапуске приложения без дублирования. файл без необходимости.
- Эффективное кэширование. Используйте механизм кэширования (например, Expo Image) для динамической загрузки, кэширования и выгрузки изображений, избегая ручного управления ресурсами.< /li>
Нет дубликатов без необходимости: избегайте создания ненужных копий файлов, если это явно не требуется для целей кэширования.
Вот код, с которым я экспериментирую:
Код: Выделить всё
const images: DocumentPickerResponse[] = await DocumentPicker.pick({
type: [DocumentPicker.types.images],
allowMultiSelection: true,
mode: "open",
});
// Trying to resolve the full path
RNFetchBlob.fs.stat(image.uri).then((stats) => {
console.log("Source URI:", stats.path); // Expected this to provide a persistent file path
});
Код: Выделить всё
- Использование URI file://, полученных из RNFetchBlob.fs.stat() изначально работает, но не обеспечивает постоянный доступ после закрытия и повторного открытия приложения.
- Я еще не перешел на использование Expo Image, так как сейчас тестирую вариант по умолчанию. Компонент изображения для обеспечения базовой функциональности.
Временные URI: эквиваленты file://, полученные с помощью таких библиотек, как Похоже, что RNFetchBlob не является постоянным, вызывая проблемы после перезапуска приложения.
Вопросы:
Как реализовать постоянную систему URI, которая беспрепятственно работает с Expo Image, обеспечивающий эффективное кэширование, загрузку и выгрузку. изображений без создания дубликатов файлов?
Примечания.
Копирование всех изображений в хранилище приложения приведет к ненужному дублированию, что неэффективно для большого приложения-галереи. . Я стараюсь избегать этого без крайней необходимости.Буду очень признателен за любые рекомендации по реализации этого рабочего процесса. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... -efficient
Мобильная версия