Window: showOpenFilePicker() メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
Window インターフェイスの showOpenFilePicker() メソッドは、ユーザーが単一または複数のファイルを選択できるファイルピッカーを表示し、それらのファイルのハンドルを返します。
構文
showOpenFilePicker()
showOpenFilePicker(options)
引数
options省略可-
以下のオプションを含むオブジェクトです。
excludeAcceptAllOption省略可-
論理値で、デフォルトは
falseです。 通常、ピッカーは (以下のtypeオプションに基づく) ファイル形式フィルターを何も適用しない選択肢を含むはずです。このオプションをtrueにすると、この選択肢を利用 不可能 にします。 id省略可-
ID を指定すると、ブラウザーは ID ごとに異なるディレクトリーを記憶できます。同じ ID を別のピッカーで使用すると、そのピッカーは同じディレクトリーで開きます。
multiple省略可-
論理値で、デフォルトは
falseです。trueに設定すると、複数のファイルを選択できるようになります。 startIn省略可-
ダイアログを開く場所として、
FileSystemHandleまたは既知のディレクトリー ("desktop","documents","downloads","music","pictures","videos") を指定します。 types省略可-
選択可能なファイル形式の
配列です。各項目は、以下のオプションを持つオブジェクトです。description省略可-
選択可能なファイル形式のカテゴリーの説明です。省略可能で、デフォルトは空文字列です。
accept
返値
FileSystemFileHandle オブジェクトの配列で解決する Promise を返します。
例外
AbortErrorDOMException-
ユーザーが選択せずにプロンプトを閉じた場合、またはユーザーエージェントが選択されたファイルをウェブサイトに開示するにはセンシティブまたは危険すぎると判断した場合に発生します。
SecurityErrorDOMException-
呼び出しが同一オリジンポリシーによってブロックされた場合、またはボタンの押下など、ユーザーの操作によって呼び出されなかった場合に発生します。
TypeError-
acceptで指定されたファイル形式を処理できない場合に発生します。たとえば、次のような場合です。types内のいずれかの項目にあるacceptオプションのキー文字列が、有効な MIME タイプとして構文解析できない。types内のいずれかの項目にあるacceptオプションの値文字列が無効である。たとえば、.で始まらない、.で終わる、無効なコードポイントを含み、かつ長さが 16 を超える場合など。typesオプションが空で、excludeAcceptAllOptionオプションがtrueである。
セキュリティ
ユーザーによる一時的な有効化が必要です。この機能が動作するには、ユーザーがページまたは UI 要素を操作する必要があります。
例
このメソッドに渡すオプションオブジェクトを設定します。画像のファイル形式の選択を許可し、すべてのファイル形式の選択や複数ファイルの選択は許可しません。
const pickerOpts = {
types: [
{
description: "Images",
accept: {
"image/*": [".png", ".gif", ".jpeg", ".jpg"],
},
},
],
excludeAcceptAllOption: true,
multiple: false,
};
そして、ファイルピッカーを表示して選択されたファイルを返す非同期の関数を作成できます。
// ファイルハンドルへの参照を作成する
let fileHandle;
async function getFile() {
// ファイルピッカーを開き、返される 1要素の配列を展開する
[fileHandle] = await window.showOpenFilePicker(pickerOpts);
// fileHandle を用いてコードを実行する
}
仕様書
| 仕様書 |
|---|
| File System Access> # api-showopenfilepicker> |