Описание
Используйте API chrome.fileBrowserHandler
для расширения файлового браузера Chrome OS. Например, вы можете использовать этот API, чтобы пользователи могли загружать файлы на ваш сайт.
Разрешения
fileBrowserHandler
Доступность
Браузер файлов 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.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(id: string, details: FileHandlerExecuteEventDetails) => void
- идентификатор
нить
- подробности