#indexeddb
Вопрос:
Я хочу загрузить изображение из файловых объектов, которые хранятся в индексированной БД. Когда я тестировал в Chrome, он работал хорошо. Но в ПК и мобильном safari это не работает. Я проверил журнал консоли, прежде чем загрузить его. Я могу наблюдать файловый объект, и он также может быть преобразован в URL-адрес данных base64. Но не включен в тело запроса api. Данные формы являются нормальными, но данные запроса api содержат пустое содержимое файла.
Комментарии:
1. Возможным обходным путем, который приходит на ум, было бы клонирование файла:
new File( [ await file_from_IDB.arrayBuffer() ], file_from_IDB.name )
.2. @Kaiido Спасибо вам за ваш комментарий. Блоб-клон был ответом на этот случай.
const fileData = filteredFiles.slice(0, 10).map((file) => { const blob = file.slice(); return new File([blob], file.name, { type: file.type }); });
3. В мобильном safari клонирование blob-объекта не работало, файл — > база 64 — > > файловый процесс работает хорошо. Наконец я решил не использовать индексированную БД из-за ее ограничения на хранение
4. Какой лимит хранения? IndexedDB-это одно из менее ограниченных хранилищ, которое у нас есть в браузере. Кроме того, в моем первом комментарии я сказал вам клонировать этот файл с помощью
.arrayBuffer()
метода, это займет гораздо меньше памяти, чем через URL-адрес данных.