chrome.fileBrowserHandler

説明

chrome.fileBrowserHandler API を使用すると、ChromeOS ファイル ブラウザを拡張できます。たとえば、ウェブサイトにユーザーがファイルをアップロードできるようにする場合にこの API を使用できます。

コンセプトと使用方法

ChromeOS ファイル ブラウザは、ユーザーが Alt+Shift+M キーを押すか、SD カード、USB キー、外部ドライブ、デジタル カメラなどの外部ストレージ デバイスを接続すると表示されます。ファイル ブラウザでは、外部デバイス上のファイルだけでなく、ユーザーが以前にシステムに保存したファイルも表示できます。

ユーザーが 1 つ以上のファイルを選択すると、ファイル ブラウザに、それらのファイルの有効なハンドラを表すボタンが追加されます。たとえば、次のスクリーンショットでは、末尾が「.png」のファイルを選択すると、ユーザーがクリックできる [ギャラリーに保存] ボタンが表示されます。

ChromeOS ファイル ブラウザ。
ChromeOS ファイル ブラウザ。

権限

fileBrowserHandler

拡張機能マニフェスト"fileBrowserHandler" 権限を宣言する必要があります。

対象

ChromeOS のみ フォアグラウンドのみ

"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.fileBrowserHandleronExecute イベントを処理する関数を実装する必要があります。関数は、ユーザーがファイル ブラウザ ハンドラを表すボタンをクリックするたびに呼び出されます。関数で 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 ファイル ブラウザからファイル システム アクションが実行されたときに発生します。

パラメータ