Описание
 Используйте API chrome.fileBrowserHandler для расширения файлового браузера Chrome OS. Например, вы можете использовать этот API, чтобы пользователи могли загружать файлы на ваш сайт.
Концепции и использование
Браузер файлов ChromeOS открывается, когда пользователь нажимает Alt+Shift+M или подключает внешнее запоминающее устройство, например SD-карту, USB-накопитель, внешний диск или цифровую камеру. Помимо отображения файлов на внешних устройствах, файловый браузер также может отображать файлы, которые пользователь ранее сохранил в системе.
Когда пользователь выбирает один или несколько файлов, браузер файлов добавляет кнопки, представляющие допустимые обработчики для этих файлов. Например, на следующем снимке экрана выбор файла с суффиксом «.png» приводит к появлению кнопки «Сохранить в галерее», которую пользователь может нажать.

Разрешения
fileBrowserHandler Вы должны объявить разрешение "fileBrowserHandler" в манифесте расширения .
Доступность
 Вы должны использовать поле "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.
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(id: string, details: FileHandlerExecuteEventDetails) => void - идентификаторнить 
- подробности