2010-11-21 3 views
2

Firefox 3.6 давайте отбросим каталог на какой-либо элемент (используя API Drag And Drop) и обработаем эти файлы с помощью FileAPI. Как это работает с каталогами?Javascript FileAPI: Итерационные каталоги?

Mac OS X Finder отображает некоторые каталоги в виде файлов (.app, .tmbundle, .abbu, ...). В большинстве случаев это замечательно. В случае взаимодействия с браузером через File- и DND-API это не так. Конечный пользователь не способен различать реальный файл и сортировку файла, например my-addressbook-backup.abbu.

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

Любые идеи о том, как это можно сделать?

Edit:

Я могу видеть (потенциальных) проблемах, возникающих при позволяя JS для обхода каталогов. Я не призываю к обходу каталога как таковой (хотя я бы не связывал возможность). Я говорю о том, что Foo.app рассматривается как файл (как это видно пользователю через Finder.app), но фактически является каталогом (как это видно при просмотре в Terminal.app).

В настоящее время API файлов не предоставляет никаких механизмов перемещения. Таким образом, более глубокие вложенные файлы в адресной книге-dump.abbu не будут доступны. Есть ли какие-то мысли, чтобы сделать это возможным?

В противном случае я должен был бы сообщить своим пользователям OSX сделать архив (например, ZIP) своего файла адресной книги и «загрузить» этот почтовый индекс (который я действительно могу прочитать в JS). Хотя это обходное решение, а не решение.

+0

http://www.html5rocks.com/en/tutorials/file/filesystem выглядит многообещающе – rodneyrehm

ответ

3

Теоретически, что вы описываете, можно выполнить с помощью API FileReader. Например, this demo читает ZIP-файл (hit load photos.zip), распаковывает его содержимое, а отображает список изображений, которые он содержит для пользователя.

Для общей перетаскивания папки есть две ошибки, содержащие Chrome/WebKit: 1, 2. Когда те получат исправление, вы сможете перетащить папку из ОС на <input type="file" webkitdirectory> и пройти всю ее иерархию. Чтобы увидеть webkitdirectory в действии, зарегистрируйтесь this demo в Chrome.

+0

Пример ZIP (уже указанный в моем вопросе) является довольно плохим обходным решением. До сих пор я не знал о API файловой системы. Не могу дождаться этого :) – rodneyrehm

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