chrome.fileBrowserHandler

Описание

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

Концепции и использование

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

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

Файловый браузер ChromeOS.
Файловый браузер ChromeOS.

Разрешения

fileBrowserHandler

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

Доступность

Только ChromeOS Только передний план

Вы должны использовать поле "file_browser_handlers" чтобы зарегистрировать расширение в качестве обработчика хотя бы одного типа файлов. Вы также должны предоставить значок размером 16 на 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 chrome.fileBrowserHandler . Ваша функция будет вызываться всякий раз, когда пользователь нажимает кнопку, которая представляет обработчик вашего файлового браузера. В своей функции используйте API файловой системы , чтобы получить доступ к содержимому файла. Вот пример:

chrome.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.

Характеристики

  • записи

    любой[]

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

  • tab_id

    номер необязательно

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

События

onExecute

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

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

Параметры