0

Я пишу расширение chrome, которое добавит пользовательские изображения на веб-страницу. Я хочу, чтобы пользователи помещали все свои изображения в папку «backgrounds», и я хочу, чтобы мое расширение могло извлекать имена файлов для каждого файла в каталоге «backgrounds» в папке расширений. Похоже, в хромовых расширениях нет возможности сделать это. Когда я пытаюсь использовать хромовый FileSystem API, я получаю эту ошибку:Получить имена файлов для всех файлов в хром-каталоге расширения?

There were warnings when trying to install this extension: 
'fileSystem' is only allowed for packaged apps, but this is a extension. 

Как я могу это сделать?

+0

Этот комментарий нить может быть полезно: https://github.com/Wykks/Untamed-Now-Playing-Next/issues/40 – lifetimes

+0

@daniel я не узнал ничего из этого, и я на самом деле более запутанным в настоящее время. – user2936448

+1

В основном вы можете использовать файловую систему только с приложениями Chrome, а не с расширениями. В нем говорится о разделении аспектов расширения/приложения на разные вещи, но да .. – lifetimes

ответ

4

Вы можете получить доступ только для чтения к папке вашего расширения с помощью chrome.runtime.getPackageDirectoryEntry, с помощью которого вы можете работать с помощью HTML5 FileSystem API.

Однако это не позволит вам делать то, что вы хотите.

Пока вы разрабатываете расширение, оно будет работать нормально, поскольку Chrome не возражает против изменений в папке расширения - они ожидаются.

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

Таким образом, вы должны рассмотреть другие подходы, а не, например:

  • с использованием выше HTML5 FileSystem API, чтобы иметь виртуальную постоянную файловую систему, в которой вы можете позволить пользователю «загрузить» файлы через ваш пользовательский интерфейс;
  • данные хранения как blob:/data: URI в chrome.storage;
  • просит пользователя поместить файлы в облачный накопитель, к которому ваше расширение может получить доступ, используя для этого обычный API.
Смежные вопросы