Cuando llamas a showDirectoryPicker(); obtienes un selector de directorio. Después de seleccionar un directorio, Chrome le pedirá permiso para ver los archivos en esa carpeta.
Código de ejemplo:
let dirHandle = showDirectoryPicker();El código anterior solicitará permisos cada vez que elija una carpeta, incluso si ya le ha dado acceso.
Debería poder almacenar dirHandle en indexDB para que, si un usuario ya ha dado permiso, no vuelva a solicitar permisos si usa el identificador ya guardado de indexDB y elige una carpeta a la que ya le ha otorgado permisos.
El problema es que estoy guardando y recuperando el dirHandle a/desde indexDb, pero aún solicita permiso en las carpetas a las que ya he dado permiso.
Código que pensé que debería funcionar: Nota: get y set son solo abreviaturas para guardar y cargar en indexDb
asyn function (){ let dirHandle = await get("directory"); dirHandle = await window.showDirectoryPicker(); await set("directory", dirHandle); } Entonces, en el código anterior, recupero dirHand de indexDb y luego lo configuro en dirHand = window.ShowDirectoryPicker . Aparecerá una ventana pidiéndole que seleccione una carpeta. Si selecciono una carpeta a la que ya le he otorgado permisos, no debería volver a solicitarlos, incluso después de actualizar la página. Funciona bien si no actualiza la página.
Estoy bastante seguro de que esto debería funcionar como se ve en este proyecto de ejemplo https://github.com/GoogleChromeLabs/text-editor/
Este proyecto es de este buen artículo que explica cómo lograr estos resultados, pero obviamente no me funciona. Consulte el artículo https://web.dev/file-system-access .
Puede probar en vivo su editor de texto demostrando que no se le pedirán permisos de una carpeta previamente otorgada, incluso después de actualizar la página. Ver demostración en vivo https://googlechromelabs.github.io/text-editor/
Ejemplo, vaya a Archivo > Abrir y elija un archivo. Si es la primera vez que abre un archivo en esta carpeta, le pedirá permisos para ver los archivos. Ahora actualice la página e intente abrir el mismo archivo. No volverá a solicitar la terminación previa y puede guardar el archivo. Le pedirá permisos la primera vez que guarde un archivo, pero no en llamadas posteriores. He mirado su código y no puedo entender qué estoy haciendo mal. Cualquier ayuda es muy apreciada. TY
Chrome siempre solicita permiso, incluso para identificadores de archivos persistentes en IndexedDB:
El aviso inicial:
El aviso después de volver a abrir un archivo desde un identificador de archivo persistente: