0

showDirectoryPicker(); を呼び出すと、ディレクトリピッカーを取得します。ディレクトリを選択すると、chrome はそのフォルダ内のファイルを表示する許可を求めます。

コード例:

 let  dirHandle = showDirectoryPicker();

上記のコードは、フォルダーへのアクセスを既に許可している場合でも、フォルダーを選択するたびにアクセス許可を求めます。

dirHandle を indexDB に格納できる必要があります。これにより、ユーザーが既にアクセス許可を付与している場合、既に保存されている indexDB のハンドルを使用し、既にアクセス許可を付与したフォルダーを選択した場合に再度アクセス許可を求められることはありません。

問題は、dirHandle を indexDb との間で保存および取得していることですが、既にアクセス許可を与えたフォルダーに対するアクセス許可を求められます。

動作するはずだと思ったコード: 注 -- get と set は、indexDb への保存と読み込みの省略形です。

asyn function (){
 let dirHandle = await get("directory");
 dirHandle = await window.showDirectoryPicker();
  await set("directory", dirHandle);
}

したがって、上記のコードでは、indexDb から dirHand を取得し、それを に設定していdirHand = window.ShowDirectoryPickerます。フォルダの選択を求めるウィンドウが表示されます。既にアクセス許可を与えているフォルダーを選択すると、ページを更新した後でも再度アクセス許可を求められることはありません。ページを更新しなくても問題ありません。

このサンプルプロジェクトhttps://github.com/GoogleChromeLabs/text-editor/に見られるように、これが機能するはずだと確信しています

このプロジェクトは、これらの結果を達成する方法を説明するこの素晴らしい記事からのものですが、明らかに私にとってはうまくいきません。記事https://web.dev/file-system-accessを参照してください。

ページを更新した後でも、以前に許可されたフォルダーからアクセス許可を求められないことを示す、彼のテキスト エディターをライブで試すことができます。ライブデモを見るhttps://googlechromelabs.github.io/text-editor/

たとえば、[ファイル] > [開く] に移動し、ファイルを選択します。このフォルダ内のファイルを初めて開く場合は、ファイルを表示する権限を求められます。ページを更新して、同じファイルを開こうとします。再度事前終了を求めることはなく、ファイルを保存できます。ファイルを初めて保存するときは許可を求めますが、それ以降の呼び出しでは要求しません。私は彼のコードを見ましたが、何が間違っているのかわかりません。どんな助けでも大歓迎です。タイ

4

1 に答える 1