2013-12-18 6 views
3

Итак, я новичок в IndexedDB и не особенно разбираюсь в Javascript. Прямо сейчас у меня есть код, который работает так, что пользователь может просматривать файл в своей файловой системе, и, когда он выбран, файл разбивается на куски (используя срез), эти куски преобразуются в шестнадцатеричные строки и строки (вместе с ключом) хранятся в IndexedDB.IndexedDB Сохранить диапазон как

Хорошая вещь об этой модальности заключается в том, что пользователь может выбрать очень большой файл, и, поскольку я использую правильные конструкции, весь файл не нужно загружать в память сразу.

Теперь я пытаюсь прочесть эти шестнадцатеричные строки и открыть окно браузера «Сохранить как», когда пользователь нажимает кнопку. Проблема в том, что мне не удалось найти способ «вытолкнуть» данные из IndexedDB на вкладку «Сохранить как». Кто-нибудь из вас знает, как это сделать? Я приближаюсь к концу.

Благодаря

+0

Я не думаю, что вы можете его переправить. Я мог бы легко найти способ просто объединить данные и сохранить их, но потоковая передача: если вы не хотите загружать на сервер, а затем передавать его (что полностью поражает точку), я не думаю, что есть способ – Markasoftware

+0

Право , Я рассмотрел оба сценария, и я обеспокоен тем, что если файл слишком велик, объединение всех шестнадцатеричных (или base64 или blobs или любых других) вместе, скорее всего, приведет к исключению памяти. Операция среза FileReader настроила меня так, чтобы я мог заниматься файлом, когда кусок заходил ... Я действительно надеялся, что будет жизнеспособный вариант для выхода файла. –

+0

нравится ... насколько большой? – Markasoftware

ответ

1

IndexedDB не может сделать частичное (или выступ) чтение/запись на запись. API FileSystem кажется вероятным, поскольку он используется для такого использования, как последовательный поиск по большому файлу, но я не уверен.

Возможно, вы захотите ознакомиться с этим недавним обсуждением, IndexedDB, Blobs and partial Blobs - Large Files. Они также обсуждают решение проблемы.

+1

Обсуждение, которое вы связали с обработкой данных в IndexedDB, что не является моей проблемой. Мое желание состоит в том, чтобы представить конечному пользователю ссылку что при щелчке заставит браузер предложить им сохранить файл где-то в их локальной системе, а затем, когда они выберут местоположение, чтобы читать данные по одной записи за раз от IndexedDB, объединяя записи один за другим, составьте полученный файл. –

Смежные вопросы