Описание
Используйте 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
- идентификатор
нить
- подробности