Beschreibung
Mit der chrome.fileBrowserHandler API können Sie den ChromeOS-Dateibrowser erweitern. Mit dieser API können Sie Nutzern beispielsweise ermöglichen, Dateien auf Ihre Website hochzuladen.
Konzepte und Nutzung
Der ChromeOS-Dateimanager wird aufgerufen, wenn der Nutzer entweder Alt+Umschalt+M drückt oder ein externes Speichergerät wie eine SD-Karte, einen USB-Stick, eine externe Festplatte oder eine Digitalkamera anschließt. Neben den Dateien auf externen Geräten kann der Dateibrowser auch Dateien anzeigen, die der Nutzer zuvor im System gespeichert hat.
Wenn der Nutzer eine oder mehrere Dateien auswählt, werden im Dateibrowser Schaltflächen für die gültigen Handler für diese Dateien hinzugefügt. Wenn Sie beispielsweise im folgenden Screenshot eine Datei mit der Endung „.png“ auswählen, wird die Schaltfläche „In Galerie speichern“ angezeigt, auf die der Nutzer klicken kann.
Berechtigungen
fileBrowserHandlerSie müssen die Berechtigung "fileBrowserHandler" im Erweiterungsmanifest deklarieren.
Verfügbarkeit
Sie müssen das Feld "file_browser_handlers" verwenden, um die Erweiterung als Handler für mindestens einen Dateityp zu registrieren. Sie sollten auch ein 16 × 16-Symbol für die Schaltfläche bereitstellen. Beispiel:
{
"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"
},
...
}
Dateibrowser-Handler implementieren
Um diese API zu verwenden, müssen Sie eine Funktion implementieren, die das onExecute-Ereignis von browser.fileBrowserHandler verarbeitet. Ihre Funktion wird immer dann aufgerufen, wenn der Nutzer auf die Schaltfläche klickt, die Ihren Dateibrowser-Handler darstellt. Verwenden Sie in Ihrer Funktion die File System API, um auf den Dateiinhalt zuzugreifen. Hier ein Beispiel:
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
}
});
Ihrem Event-Handler werden zwei Argumente übergeben:
id- Der
id-Wert aus der Manifestdatei. Wenn Ihre Erweiterung mehrere Handler implementiert, können Sie anhand des ID-Werts ermitteln, welcher Handler ausgelöst wurde. details- Ein Objekt, das das Ereignis beschreibt. Die vom Nutzer ausgewählte(n) Datei(en) finden Sie im Feld
entriesdieses Objekts, das ein Array vonFileSystemFileEntry-Objekten ist.
Typen
FileHandlerExecuteEventDetails
Nutzlast mit Termindetails für das Ereignis „fileBrowserHandler.onExecute“.
Attribute
-
entries
any[]
Array von Entry-Instanzen, die Dateien darstellen, die Ziele dieser Aktion sind (im ChromeOS-Dateimanager ausgewählt).
-
tab_id
number optional
Die ID des Tabs, der dieses Ereignis ausgelöst hat. Tab-IDs sind innerhalb einer Browsersitzung eindeutig.
Ereignisse
onExecute
chrome.fileBrowserHandler.onExecute.addListener(
callback: function,
)
Wird ausgelöst, wenn eine Dateisystemaktion über den ChromeOS-Dateimanager ausgeführt wird.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(id: string, details: FileHandlerExecuteEventDetails) => void
-
id
String
-
Details
-