chrome.fileBrowserHandler

Описание

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

Разрешения

fileBrowserHandler

Доступность

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

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

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

Скриншот файлового браузера

Манифест

Вы должны объявить разрешение «fileBrowserHandler» в манифесте расширения и использовать поле «file_browser_handlers», чтобы зарегистрировать расширение в качестве обработчика хотя бы одного типа файлов. Вы также должны предоставить значок размером 16x16, который будет отображаться на кнопке. Например:

{
  "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, чтобы узнать, какой обработчик был запущен.
подробности
Объект, описывающий событие. Вы можете получить файл или файлы, выбранные пользователем, из поля entries этого объекта, который представляет собой массив объектов FileSystemFileEntry .

Типы

FileHandlerExecuteEventDetails

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

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

  • записи

    любой[]

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

  • tab_id

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

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

События

onExecute

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

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

Параметры