browser.fileBrowserHandler

Описание

Используйте API chrome.fileBrowserHandler, чтобы расширить возможности файлового менеджера ChromeOS. Например, с помощью этого API можно разрешить пользователям загружать файлы на ваш сайт.

Основные понятия и использование

Файловый менеджер ChromeOS открывается, когда пользователь нажимает Alt + Shift + M или подключает внешнее устройство хранения данных, например SD-карту, USB-ключ, внешний диск или цифровую камеру. В файловом браузере можно просматривать не только файлы на внешних устройствах, но и файлы, сохраненные пользователем в системе.

Когда пользователь выбирает один или несколько файлов, в файловом браузере появляются кнопки, соответствующие допустимым обработчикам для этих файлов. Например, на скриншоте ниже показано, что при выборе файла с расширением PNG появляется кнопка "Сохранить в галерее".

Файловый менеджер ChromeOS.
Файловый браузер ChromeOS.

Разрешения

fileBrowserHandler

В манифесте расширения необходимо объявить разрешение "fileBrowserHandler".

Доступность

Только для ChromeOS Только для активного режима

Чтобы зарегистрировать расширение в качестве обработчика хотя бы одного типа файлов, необходимо использовать поле "file_browser_handlers". Также необходимо предоставить значок размером 16 x 16 пикселей, который будет показываться на кнопке. Пример:

{
  "name": "My extension",
  ...
  "file_browser_handlers": [
    {
      "id": "upload",
      "default_title": "Save to Gallery", // What the button will display
      "file_filters": [
        "filesystem:*.jpg",  // To match all files, use "filesystem:*.*"
        "filesystem:*.jpeg",
        "filesystem:*.png"
      ]
    }
  ],
  "permissions" : [
    "fileBrowserHandler"
  ],
  "icons": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  },
  ...
}

Как реализовать обработчик диспетчера файлов

Чтобы использовать этот API, необходимо реализовать функцию, которая обрабатывает событие onExecute в browser.fileBrowserHandler. Функция будет вызываться каждый раз, когда пользователь нажимает кнопку, представляющую обработчик файлового браузера. В функции используйте API файловой системы, чтобы получить доступ к содержимому файла. Пример:

browser.fileBrowserHandler.onExecute.addListener(async (id, details) => {
  if (id !== 'upload') {
    return;  // check if you have multiple file_browser_handlers
  }

  for (const entry of detail.entries) {
    // the FileSystemFileEntry doesn't have a Promise API, wrap in one
    const file = await new Promise((resolve, reject) => {
      entry.file(resolve, reject);
    });
    const buffer = await file.arrayBuffer();
    // do something with buffer
  }
});

Обработчику событий передаются два аргумента:

id
Значение id из файла манифеста. Если в расширении реализовано несколько обработчиков, вы можете проверить значение идентификатора, чтобы узнать, какой обработчик был запущен.
details
Объект, описывающий событие. Вы можете получить файл или файлы, выбранные пользователем, из поля entries этого объекта, которое представляет собой массив объектов FileSystemFileEntry.

Типы

FileHandlerExecuteEventDetails

Полезная нагрузка сведений о событии для события fileBrowserHandler.onExecute.

Свойства

  • записи

    any[]

    Массив экземпляров Entry, представляющих файлы, которые являются целями этого действия (выбраны в файловом браузере ChromeOS).

  • tab_id

    number (необязательно)

    Идентификатор вкладки, которая вызвала это событие. Идентификаторы вкладок уникальны в пределах сеанса браузера.

События

onExecute

browser.fileBrowserHandler.onExecute.addListener(
  callback: function,
)

Срабатывает, когда в файловом браузере ChromeOS выполняется действие с файловой системой.

Параметры