He estado siguiendo este artículo para permitir a los usuarios guardar (semi) automáticamente un archivo XML generado por el lado del cliente en una carpeta local específica. Un programa de terceros está observando esta carpeta y procesará su contenido y generará contenido en otro archivo.
El problema es que se tarda unos 250 ms desde que se crea el archivo hasta que el contenido se escribe realmente en el archivo mediante el método close().
A veces, el programa de terceros detectará que se ha creado el archivo e intentará leer su contenido antes de escribirlo. El programa no admite agregar un retraso antes de intentar leer el contenido del archivo.
He buscado escribir el archivo en una ubicación temporal y moverlo una vez que está cerrado, pero esto no parece ser posible con esta API. Lo mismo ocurre con el cambio de nombre del archivo.
Crear/descargar el archivo usando un cuadro de diálogo normal probablemente funcionaría, pero esto requiere pasos manuales que pueden evitarse usando la API de acceso al sistema de archivos.
Otra solución sería instalar un programa local que pueda mover el archivo de una carpeta temporal a la carpeta de observación del programa cuando esté cerrado, pero prefiero evitar tener que instalar software en el cliente.
¿Hay alguna otra forma de evitar este problema?
Gracias
Ahora hay una forma de cambiar el nombre y mover archivos (actualmente implementado en Chrome 96 detrás del indicador de características de la plataforma web experimental):
// Get references to a file and a directory. const [file] = await showOpenFilePicker(); const directory = await showDirectoryPicker(); // Rename the file. await file.rename('new_name'); // Move the file to a new directory. await file.move(directory); // Move the file to a new directory and rename it. await file.move(directory, 'newer_name');Puede seguir el trabajo de especificaciones suscribiéndose a este PR .