API файловой системы JS: доступ к JS FileEntry в локальной системе?

Я тестирую некоторые из новых возможностей файловой системы JS, то есть создание пустого текстового файла в локальной файловой системе. Я запускаю файлы HTML и JS с локального пути (файл:///). Для этого я запустил Google Chrome с флагом --allow-file-access-from-files из CLI. Запрос файловой системы является ПОСТОЯННЫМ (и работает).

Я прочитал разные сообщения о файловой системе, скопировал и изменил часть кода в учебниках; Когда я запускаю файл HTML, мои пользовательские сообщения об успехе/неуспехе выводятся в консоль;

Вот результат:

Opened file system:/   // this is the root path of the JS Filesystem.

/wtf.txt  // this is the name and path of the text file I created+ it's a success

Однако, когда я смотрю на свой каталог (как системный, так и корневой каталог приложения), там нет файла .txt с именем, которое я ему присвоил. Как я могу узнать, где Javascript действительно написал этот файл? В каком "корне" (поскольку "корень" присвоить нельзя)? Что означает, что файловая система является «песочницей»? Что я не могу получить доступ к его содержимому (виртуальному?) на моем локальном диске, но только с помощью JS? Если это так, есть ли способ предложить пользователю сохранить файл?

Заранее спасибо за ваши ответы


person Tyblitz    schedule 17.08.2013    source источник


Ответы (1)


Похоже, вы ожидаете, что API файловой системы будет работать локально аналогично файловой системе ОС. Клиент так не работает. На самом деле, и API предназначен для вашего интерфейса, как программиста, к файлам и каталогам - сам клиент (например, Chrome и т. д.) будет обрабатывать все остальное на локальном уровне. API не предназначен для того, чтобы вы могли создать файл через браузер и легко получить к нему доступ через операционную систему.

Как я могу узнать, где Javascript действительно написал этот файл? В каком "корне" (поскольку "корень" не может быть назначен)?

С технической точки зрения каждый клиент может хранить локально по своему усмотрению. Таким образом, хотя вы можете обратиться к локальной файловой системе для поиска файла, что-то не так с вашим подходом, если вы пытаетесь это сделать; API файловой системы не предназначен для этого. На ваш вопрос вы можете предположить, что если есть контент в области хранения клиента (например, для Chrome это что-то вроде «C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Local\Google\Chrome\User Data\Default\File System\»), то вы можете предположить, что это написал JavaScript. Но опять же, он не настроен для удобного просмотра в локальной системе.

Что означает, что файловая система является "песочницей"?

Песочница просто означает область, созданную и выделенную для определенной цели, за пределами которой клиент не может видеть/доступ к ней. См. это в Mozilla: https://developer.mozilla.org/en-US/docs/WebGuide/API/File_System/Introduction#virtual

Что я не могу получить доступ к его (виртуальному?) содержимому на моем локальном диске, но только с помощью JS?

Это правильно и по замыслу.

Если это так, есть ли способ предложить пользователю сохранить файл?

Если я правильно понимаю ваш вопрос, вы спрашиваете, есть ли способ предоставить пользователю определенный файл и попросить его сохранить его локально. Ну, конечно, если вы предоставите ссылку на файл (или нажмете ее, другое обсуждение), тогда клиент предложит пользователю сохранить/сохранить его, если их платформа позволяет им это сделать. Но вы не можете контролировать, где они сохраняют его локально, и вы не можете получить его позже. Если я неправильно понял ваш вопрос, прокомментируйте ниже, и я свяжусь с вами.

person Phil Nicholas    schedule 22.08.2013
comment
Нет, спасибо, это ответ на мой вопрос. Спасибо и за предоставленную ссылку. - person Tyblitz; 23.08.2013