Beschrijving
Gebruik de chrome.fileBrowserHandler API om de ChromeOS-bestandsbrowser uit te breiden. Je kunt deze API bijvoorbeeld gebruiken om gebruikers bestanden te laten uploaden naar je website.
Concepten en gebruik
De ChromeOS-bestandsbrowser wordt geopend als de gebruiker op Alt+Shift+M drukt of een extern opslagapparaat aansluit, zoals een SD-kaart, USB-stick, externe schijf of digitale camera. De bestandsbrowser toont niet alleen de bestanden op externe apparaten, maar ook bestanden die de gebruiker eerder op het systeem heeft opgeslagen.
Als de gebruiker een of meer bestanden selecteert, voegt de bestandsbrowser knoppen toe die de geldige handlers voor die bestanden vertegenwoordigen. In het volgende screenshot leidt de selectie van een bestand met de extensie .png bijvoorbeeld tot de knop Opslaan in galerij waarop de gebruiker kan klikken.
Rechten
fileBrowserHandlerJe moet het recht "fileBrowserHandler" definiëren in het extensiemanifest.
Beschikbaarheid
Je moet het veld "file_browser_handlers" gebruiken om de extensie te registreren als verwerker van minstens één bestandstype. Je moet ook een icoon van 16 bij 16 leveren dat op de knop wordt getoond. Voorbeeld:
{
"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"
},
...
}
Een handler voor de bestandsbrowser implementeren
Als je deze API wilt gebruiken, moet je een functie implementeren die de gebeurtenis onExecute van browser.fileBrowserHandler verwerkt. Je functie wordt aangeroepen wanneer de gebruiker op de knop klikt die je bestandsbrowserhandler vertegenwoordigt. Gebruik in je functie de bestandssysteem-API om toegang te krijgen tot de bestandscontent. Een voorbeeld:
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
}
});
Er worden 2 argumenten doorgegeven aan uw gebeurtenishandler:
id- De waarde
iduit het manifestbestand. Als je extensie meerdere handlers implementeert, kun je de ID-waarde controleren om te zien welke handler is geactiveerd. details- Een object dat de gebeurtenis beschrijft. Je kunt het bestand of de bestanden die de gebruiker heeft geselecteerd, ophalen uit het veld
entriesvan dit object. Dit is een matrix vanFileSystemFileEntry-objecten.
Typen
FileHandlerExecuteEventDetails
Payload met gebeurtenisgegevens voor de gebeurtenis fileBrowserHandler.onExecute.
Eigenschappen
-
entries
any[]
Matrix van Entry-instanties die bestanden vertegenwoordigen die het doel van deze actie zijn (geselecteerd in de ChromeOS-bestandsbrowser).
-
tab_id
number optioneel
De ID van het tabblad dat deze gebeurtenis heeft veroorzaakt. Tabblad-ID's zijn uniek binnen een browsersessie.
Evenementen
onExecute
browser.fileBrowserHandler.onExecute.addListener(
callback: function,
)
Wordt geactiveerd als een bestandssysteemactie wordt uitgevoerd vanuit de ChromeOS-bestandsbrowser.
Parameters
-
callback
functie
De parameter
callbackziet er zo uit:(id: string, details: FileHandlerExecuteEventDetails) => void
-
id
tekenreeks
-
details
-