2017-02-08 7 views
0

Привет, я хочу сохранить массив файла типа ввода.Как сохранить массив файлов типа ввода в месте хранения?

<input type="file" id="fuGerber" onchange="saveFiles(this.files)" multiple /> 

Я уже попытался это:

localStorage.setItem('files',JSON.stringify(files)); 

ИЛИ это:

localStorage.setItem('files',JSON.stringify(files[0])); 

но JSON.stringify возвращает пустой "{}" или это во втором случае "{" 0" : {}} " Кто-нибудь знает что-то, чтобы сохранить его, не потеряв ничего внутри массива.

Это то, что мой массив есть:

This is what my array have

+0

Зачем вам хранить данные в массиве с момента его временного размещения? Вы предпочли бы данные изображения? – andrew196

+0

Файл не является изображениями, это текстовые файлы, и мне это нужно, потому что во второй раз, когда пользователь выбирает другой файл, я должен обновить страницу после ее выбора и когда страница будет загружена снова. Я хочу, чтобы этот выбор был в порядке пользователю не нужно снова выбирать. – user3442776

+0

Просто, чтобы быть ясным, файлы не являются массивом, это FileList. Это тонкая, но важная разница. https://developer.mozilla.org/en-US/docs/Web/API/FileList – mhodges

ответ

1

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

См. Этот ответ here.

Update:

Так что я, наконец, понял, что у тебя были проблемы с после дублирования этого вопроса в JSFiddle. Проблема заключается в том, что FileList не является массивом (see here), это настраиваемый тип списка. В результате кодер JSON не знает, как правильно кодировать.

Чтобы получить данные из FileList, вам необходимо вручную создать файл-файл каждого файла в FileList, нажимать каждый объект на массив \, а затем вы сможете выполнить строгу и установить localStorage.

Doing выше я смог успешно сохранить файлы: View of files array in localStorage

Смотрите мой пример кода:

JSFiddle

Ура! Я надеюсь, что это помогает :)

+0

Нет, я хочу сохранить массив перед обработкой файла fileReader. В основном сохранить выбранный входной файл (объект массива). – user3442776

+0

Это не имеет смысла. Как еще вы планируете получить данные, чтобы фактически сохранить его? Вы все равно должны прочитать данные каким-либо образом, иначе это приведет к получению пустого массива. @ user3442776 –

+0

Все это связано с тем, что у меня есть проблема с библиотекой js, которая не очищает все его объекты, поэтому при загрузке другого файла приложение не работает нормально, поэтому я хочу обновить страницу автоматически и сохранить выбор пользователям, чтобы им не нужно было делать выбор снова после обновления – user3442776

-1

Если вы пытаетесь сохранить массив это сделать:

Чтобы сохранить:

localStorage.setItem('files', JSON.stringify(files)); 

Для восстановления из LocalStorage:

value = localStorage.getItem('files'); 
result = JSON.parse(value); 


Обновлено:

Для файла проверьте эту ссылку How to save an image to localStorage and display it on the next page?

+1

Не является массивом сообщений, является массивом входного файла, когда я применяю этот код JSON.stringify возвращает «{}», он не может быть преобразован – user3442776

+0

Are вы пытаетесь сохранить файл в локальном хранилище? –

+0

не файл, содержимое входного файла . Это массив – user3442776