как сохранить результаты ввода (webkitdirectory) для последующего использования?

Я хотел бы позволить пользователю выбрать каталог (в котором я анализирую некоторые текстовые файлы) и сохранить result(List<File>) в хранилище PERSISTENT на том же клиенте, чтобы, когда пользователь вернется, не нужно было снова выбирать тот же каталог.

Во время сеанса выбор каталога (через <input webkitdirectory="..." />), а затем доступ к каталогу и анализ файла уже работают нормально, но я понятия не имею, какие данные я должен сохранить, чтобы получить их позже. Я пытался использовать window.webkitResolveLocalFileSystemURL(), но пока безуспешно... есть идеи?


person rudy    schedule 23.10.2012    source источник
comment
Было бы полезно, если бы вы изложили детали немного больше.   -  person Shannon -jj Behrens    schedule 01.11.2012
comment
Ожидаемый рабочий процесс будет следующим: Меня интересует только повторный-доступ к файлам в выбранном каталоге.   -  person rudy    schedule 02.11.2012
comment
Вы не можете этого сделать, если а) файлы не находятся в локальном хранилище, б) пользователь повторно не выбирает тот же каталог. Извините, я не придумываю правила, я просто указываю на них ;)   -  person Shannon -jj Behrens    schedule 02.11.2012
comment
Хорошо, понял, можно ли сохранить ссылку на каталог, чтобы пользователю нужно было только повторно подтвердить ее (вместо того, чтобы искать ее снова)? Меня интересует только re- доступ к файлам в выбранном каталоге, когда пользователь снова обращается к приложению (на том же клиенте) в следующий раз без необходимости загружать (или копировать) файлы куда-либо по следующим причинам: а) файлы могут быть действительно большой, б) файлы в выбранном каталоге могут быть разными (по сравнению с последней сессией), в) мне нужно только читать и анализировать файлы, пока пользователь активно использует приложение.   -  person rudy    schedule 02.11.2012
comment
Извините, но я действительно не думаю, что это возможно. Точно так же вы не можете кэшировать расположение последнего файла, загруженного пользователем. Если вы решите скопировать файлы в локальное хранилище, вы можете указать пользователю расположение файлов в локальном хранилище. Следовательно, он может изменить их там.   -  person Shannon -jj Behrens    schedule 02.11.2012


Ответы (1)


Итак, вы используете что-то вроде:

<input type="file" id="file-input" webkitdirectory="" directory="">

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

query("#file-input").on.change.add((e) {
  print(e.target.files);
});

Похоже, вы уже разобрались с этой частью.

На самом деле вы просто получаете список файлов. Я посмотрел на e.target и не думаю, что там есть что-то, связанное с самим каталогом. Например, я ничего не вижу об имени каталога, и это не значит, что вы внезапно получили доступ на запись к этому каталогу. Вы также не можете загружать файлы из этого каталога в следующий раз, когда пользователь загружает страницу, без повторного выбора каталога.

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

Смотрите также:

Кстати, я знаю, что не смог добиться именно того, чего вы хотели, но если вы одобряете мой ответ, пожалуйста, примите его. Мой босс пообещал купить мне щенка, если я отвечу на 100 вопросов в Stack Overflow ;)

person Shannon -jj Behrens    schedule 01.11.2012
comment
Привет, Шеннон, спасибо за ответ, к сожалению, это меня не продвинет, потому что отказ от загрузки файлов - это именно то, что я ищу, но спасибо за ваше время :-) - person rudy; 02.11.2012
comment
Вам не нужно загружать файлы на сервер. Использование API файловой системы HTML5 с. 20-21 показано, как копировать файлы в локальное хранилище. Следовательно, вам не нужно фактически загружать файлы на сервер, но вы не можете просто читать/записывать куда угодно на жестком диске пользователя. Я надеюсь, что это проясняет ситуацию. - person Shannon -jj Behrens; 02.11.2012