Описание
Используйте 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 объекта 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из файла манифеста. Если ваше расширение реализует несколько обработчиков, вы можете проверить значение ID, чтобы узнать, какой обработчик был запущен. -
details - Объект, описывающий событие. Вы можете получить выбранный пользователем файл или файлы из поля
entriesэтого объекта, которое представляет собой массив объектовFileSystemFileEntry.
Типы
FileHandlerExecuteEventDetails
Подробная информация о событии fileBrowserHandler.onExecute.
Характеристики
- записи
любой[]
Массив экземпляров Entry, представляющих файлы, являющиеся целями данного действия (выбранные в файловом браузере ChromeOS).
- tab_id
число необязательно
Идентификатор вкладки, вызвавшей это событие. Идентификаторы вкладок уникальны в рамках одной сессии браузера.
События
onExecute
chrome.fileBrowserHandler.onExecute.addListener(
callback: function,
)
Событие срабатывает при выполнении действий с файловой системой из файлового браузера ChromeOS.
Параметры
- перезвонить
функция
Параметр
callbackвыглядит следующим образом:(id: string, details: FileHandlerExecuteEventDetails) => void
- идентификатор
нить
- подробности