Как получить showDirectoryPicker(); из File System Access Api, чтобы не запрашивать разрешение, даже если вы храните dirHandle в IndexDB
Когда вы вызываете 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);
}
Итак, в приведенном выше коде я извлекаю dirHand из indexDb, а затем устанавливаю для него значение
dirHand = window.ShowDirectoryPicker
. Появится окно с просьбой выбрать папку. Если я выберу папку, для которой я уже предоставил разрешения, она не должна запрашивать разрешения снова даже после обновления страницы. Он отлично работает, если вы не обновляете страницу.
Я почти уверен, что это должно работать, как показано в этом примере проекта https://github.com/GoogleChromeLabs/text-editor/
Этот проект взят из этой хорошей статьи, в которой объясняется, как достичь этих результатов, но, очевидно, он не работает для меня. См. Статью https://web.dev/file-system-access.
Вы можете попробовать вживую в его текстовом редакторе, демонстрируя, что у вас не будут запрашивать разрешения из ранее предоставленной папки даже после обновления страницы. Посмотреть живую демонстрацию https://googlechromelabs.github.io/text-editor/
Пример: перейдите в меню «Файл»> «Открыть» и выберите файл. Если это первый раз, когда вы открываете какой-либо файл в этой папке, вам будет предложено разрешение на просмотр файлов. Теперь обновите страницу и попробуйте открыть тот же файл. Он больше не будет запрашивать предварительную проверку, и вы можете сохранить файл. Он будет запрашивать разрешения при первом сохранении файла, но не при последующих вызовах. Я посмотрел его код и не могу понять, что делаю не так. Любая помощь приветствуется. TY
1 ответ
Chrome всегда запрашивает разрешение, даже для сохраняемых дескрипторов файлов в IndexedDB:
Начальная подсказка:
Приглашение после повторного открытия файла из сохраненного дескриптора файла: