説明
chrome.fileBrowserHandler
API を使用すると、ChromeOS ファイル ブラウザを拡張できます。たとえば、ウェブサイトにユーザーがファイルをアップロードできるようにする場合にこの API を使用できます。
コンセプトと使用方法
ChromeOS ファイル ブラウザは、ユーザーが Alt+Shift+M キーを押すか、SD カード、USB キー、外部ドライブ、デジタル カメラなどの外部ストレージ デバイスを接続すると表示されます。ファイル ブラウザでは、外部デバイス上のファイルだけでなく、ユーザーが以前にシステムに保存したファイルも表示できます。
ユーザーが 1 つ以上のファイルを選択すると、ファイル ブラウザに、それらのファイルの有効なハンドラを表すボタンが追加されます。たとえば、次のスクリーンショットでは、末尾が「.png」のファイルを選択すると、ユーザーがクリックできる [ギャラリーに保存] ボタンが表示されます。
権限
fileBrowserHandler
拡張機能マニフェストで "fileBrowserHandler"
権限を宣言する必要があります。
対象
"file_browser_handlers"
フィールドを使用して、少なくとも 1 つのファイルタイプのハンドラとして拡張機能を登録する必要があります。また、ボタンに表示する 16 x 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 を使用するには、chrome.fileBrowserHandler
の onExecute
イベントを処理する関数を実装する必要があります。関数は、ユーザーがファイル ブラウザ ハンドラを表すボタンをクリックするたびに呼び出されます。関数で File System 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
}
});
イベント ハンドラには次の 2 つの引数が渡されます。
id
- マニフェスト ファイルの
id
値。拡張機能で複数のハンドラを実装している場合は、ID 値を確認して、どのハンドラがトリガーされたかを確認できます。 details
- イベントを記述するオブジェクト。ユーザーが選択したファイルは、このオブジェクトの
entries
フィールド(FileSystemFileEntry
オブジェクトの配列)から取得できます。
型
FileHandlerExecuteEventDetails
fileBrowserHandler.onExecute イベントのイベント詳細ペイロード。
プロパティ
-
entries
すべて []
このアクションのターゲットとなるファイル(ChromeOS ファイル ブラウザで選択)を表す Entry インスタンスの配列。
-
tab_id
number(省略可)
このイベントを発生させたタブの ID。タブ ID はブラウザ セッション内で一意です。
イベント
onExecute
chrome.fileBrowserHandler.onExecute.addListener(
callback: function,
)
ChromeOS ファイル ブラウザからファイル システム アクションが実行されたときに発生します。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。(id: string, details: FileHandlerExecuteEventDetails) => void
-
id
文字列
-