Registra una app como controlador de archivos en el sistema operativo.
Ahora que las aplicaciones web son capaces de leer y escribir archivos, la siguiente l�gica
paso es permitir que los desarrolladores declaren estas aplicaciones web como controladores de archivos para los archivos que sus aplicaciones pueden
crear y procesar. La API de File Handling te permite hacer exactamente esto. Despu�s de registrar un mensaje de texto
editor de archivos como controlador de archivos y, despu�s de instalarla, puedes hacer clic con el bot�n derecho en un archivo .txt
en macOS y
selecciona "Obtener informaci�n" para indicarle al SO que siempre debe abrir los archivos .txt
con esta app como
de forma predeterminada.
Casos de uso sugeridos para la API de File Handling
Estos son algunos ejemplos de sitios que pueden usar esta API:
- Aplicaciones de Office, como editores de texto, aplicaciones de hojas de c�lculo y creadores de presentaciones de diapositivas.
- Editores de gr�ficos y herramientas de dibujo
- Herramientas del editor de niveles del videojuego
C�mo utilizar la API de File Handling
Mejora progresiva
La API de File Handling no puede tener polyfill. La funcionalidad de abrir archivos con un aplicaci�n, se puede lograr a trav�s de otros dos medios:
- La API de Web Share Target permite que los desarrolladores especifiquen su app como objetivo de uso compartido para que los archivos se puedan abrir desde la hoja para compartir del sistema operativo.
- La API de File System Access se puede integrar para arrastrar y soltar archivos, as� que los desarrolladores pueden controlar los archivos descartados en la app ya abierta.
Navegadores compatibles
Detecci�n de funciones
Para verificar si se admite la API de File Handling, usa lo siguiente:
if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
// The File Handling API is supported.
}
La parte declarativa de la API de File Handling
Como primer paso, las aplicaciones web deben describir de forma declarativa en su manifiesto de aplicaciones web.
qu� tipo de archivos pueden manejar. La API de File Handling extiende el manifiesto de la aplicaci�n web con un nuevo
llamada "file_handlers"
, que acepta un array de controladores de archivos. Un controlador de archivos es
un objeto con estas propiedades:
- Una propiedad
"action"
que dirige a una URL dentro del alcance de la app como su valor. - Una propiedad
"accept"
con un objeto de tipos MIME como claves y listas de extensiones de archivo como su de salida. - Una propiedad
"icons"
con un array deImageResource
�conos. Algunos sistemas operativos permiten que una asociaci�n de tipo de archivo muestre un �cono que no es solo el icono de la aplicaci�n asociada, sino un icono especial relacionado con el uso de ese tipo de archivo con la aplicaci�n. - Una propiedad
"launch_type"
que define si se deben abrir varios archivos en un solo archivo o en varios clientes. El valor predeterminado es�"single-client"
. Si el usuario abre varios archivos y si el controlador de archivos se ha anotado con"multiple-clients"
como su"launch_type"
, se iniciar� m�s de un inicio de app y, para cada inicio, el ArrayLaunchParams.files
(consulta m�s abajo) solo tendr� un elemento.
El siguiente ejemplo, en el que se muestra solo el extracto relevante del manifiesto de la aplicaci�n web, deber�a hacer que m�s clara:
{
"file_handlers": [
{
"action": "/open-csv",
"accept": {
"text/csv": [".csv"]
},
"icons": [
{
"src": "csv-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "single-client"
},
{
"action": "/open-svg",
"accept": {
"image/svg+xml": ".svg"
},
"icons": [
{
"src": "svg-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "single-client"
},
{
"action": "/open-graf",
"accept": {
"application/vnd.grafr.graph": [".grafr", ".graf"],
"application/vnd.alternative-graph-app.graph": ".graph"
},
"icons": [
{
"src": "graf-icon.png",
"sizes": "256x256",
"type": "image/png"
}
],
"launch_type": "multiple-clients"
}
]
}
Esto es para una aplicaci�n hipot�tica que controla archivos de valores separados por comas (.csv
) en
/open-csv
, archivos de gr�ficos vectoriales escalables (.svg
) en /open-svg
y un formato de archivo Grafr inventado
con cualquiera de .grafr
, .graf
o .graph
como la extensi�n en /open-graf
. Las dos primeras se abrir�n
en un solo cliente, el �ltimo en varios clientes si se administran varios archivos.
La parte imperativa de la API de File Handling
Ahora que la app declar�, en teor�a, qu� archivos puede controlar y en qu� URL dentro del alcance, en teor�a, debe
hacer algo con los archivos entrantes en la pr�ctica. Aqu� es donde aparece launchQueue
.
en juego. Para acceder a los archivos que se lanzaron, un sitio debe especificar un consumidor para el window.launchQueue
. Los lanzamientos se ponen en cola hasta que los maneja el consumidor especificado, que se invoca.
exactamente una vez para cada lanzamiento. De esta manera, se controla cada lanzamiento, sin importar cu�ndo
consumidor.
if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
launchQueue.setConsumer((launchParams) => {
// Nothing to do when the queue is empty.
if (!launchParams.files.length) {
return;
}
for (const fileHandle of launchParams.files) {
// Handle the file.
}
});
}
Compatibilidad con Herramientas para desarrolladores
No se brinda asistencia para Herramientas para desarrolladores en el momento en que se redact� este documento, pero expliqu� un mensaje solicitud de funci�n para que la asistencia agregado.
Demostraci�n
Agregu� la compatibilidad con el manejo de archivos a Excalidraw, una app de dibujo con estilo de dibujos animados. Para probarlo, primero debes instalar Excalidraw. Cuando creas un archivo con �l y lo almacenas en alg�n lugar tu sistema de archivos, puedes abrir el archivo haciendo doble clic o haciendo clic con el bot�n derecho y, luego, seleccionar "Excalidraw" en el men� contextual. Puedes consultar la implementaci�n en la fuente c�digo.
Seguridad
El equipo de Chrome dise�� e implement� la API de File Handling con los principios b�sicos definidos. en C�mo controlar el acceso a funciones potentes de la plataforma web, incluido el control del usuario, transparencia y ergonom�a.
Permisos, persistencia de permisos y actualizaciones del controlador de archivos
Para garantizar la confianza de los usuarios y la seguridad de sus cuando la API de File Handling abre un archivo, se mostrar� una solicitud de permiso antes de que la AWP pueda ver un archivo. Se mostrar� esta solicitud de permiso justo despu�s de que el usuario selecciona la AWP para abrir un archivo, de modo que el permiso est� estrechamente vinculado al de abrir un archivo con la AWP y hacerlo m�s comprensible y relevante.
Este permiso se mostrar� siempre hasta que el usuario haga clic en Permitir o Bloquear el manejo de archivos. para el sitio o ignora el mensaje tres veces (despu�s de lo cual, Chromium aplicar� un embargo y bloquear� permiso). El par�metro de configuraci�n seleccionado persistir� cuando la AWP se cierre y se vuelva a abrir.
Cuando se detectan actualizaciones y cambios del manifiesto en la secci�n "file_handlers"
, los permisos
se restablecer�.
Desaf�os relacionados con los archivos
Existe una gran categor�a de vectores de ataque que se abre permitiendo que los sitios web accedan a los archivos. Estos se detallan en el art�culo sobre la API de File System Access. El capacidad adicional de seguridad pertinente que la API de File Handling proporciona a trav�s del sistema de archivos La API de acceso es la capacidad de otorgar acceso a determinados archivos a trav�s de la clave a trav�s de un selector de archivos que muestra una aplicaci�n web.
A�n existe el riesgo de que los usuarios otorguen accidentalmente acceso a un archivo a una aplicaci�n web abri�ndola. Sin embargo, se sabe generalmente que abrir un archivo permite que la aplicaci�n sea abierto para leer o manipular ese archivo. Por lo tanto, la elecci�n expl�cita del usuario de abrir un archivo en una aplicaci�n instalada, por ejemplo, mediante una ventana "Abrir con..." men� contextual, se puede leer como una cantidad suficiente una se�al de confianza en la aplicaci�n.
Desaf�os de los controladores predeterminados
La excepci�n se da cuando no hay aplicaciones en el sistema host para un tipo de archivo determinado. En En este caso, algunos sistemas operativos del host pueden promover autom�ticamente el controlador reci�n registrado al para ese tipo de archivo de forma silenciosa y sin intervenci�n del usuario. De esta forma, si el usuario hace doble clic en un archivo de ese tipo, este se abrir� autom�ticamente en la aplicaci�n web. En los sistemas operativos host, cuando el usuario-agente determina que no hay predeterminado para el tipo de archivo, puede ser necesaria una solicitud de permiso expl�cito para evitar enviar accidentalmente el contenido de un archivo a una aplicaci�n web sin el consentimiento del usuario.
Control de usuarios
Las especificaciones establecen que los navegadores no deben registrar todos los sitios que pueden manejar archivos como archivos
controlador. En su lugar, el registro del manejo de archivos debe estar restringido detr�s de la instalaci�n y nunca debe ocurrir.
sin la confirmaci�n expl�cita del usuario, especialmente si un sitio se convertir� en el controlador predeterminado. Antes que
que usurpar extensiones existentes como .json
, ya que es probable que el usuario ya tenga un controlador predeterminado
se registraron, los sitios deber�an considerar crear sus propias extensiones.
Transparencia
Todos los sistemas operativos permiten a los usuarios cambiar las asociaciones de archivos actuales. Esto est� fuera del alcance del navegador.
Comentarios
El equipo de Chrome quiere conocer tu experiencia con la API de File Handling.
Cu�ntanos sobre el dise�o de la API
�Algo en la API no funciona como esperabas? �O faltan m�todos o propiedades que necesitas para implementar tu idea? Haz una pregunta o comentario sobre la seguridad modelo?
- Informa un problema de especificaciones en el repositorio de GitHub correspondiente o agrega lo que piensas a un archivo problema.
Informar un problema con la implementaci�n
�Encontraste un error en la implementaci�n de Chrome? �O la implementaci�n es diferente de la especificaci�n?
- Informa un error en new.crbug.com. Aseg�rate de incluir todos los detalles que
instrucciones sencillas para reproducir e ingresa
UI>Browser>WebAppInstalls>FileHandling
en en el cuadro Componentes. Glitch funciona muy bien para compartir contenido de forma r�pida y sencilla. repros.
Demuestra compatibilidad con la API
�Planeas usar la API de File Handling? Tu asistencia p�blica ayuda al equipo de Chrome a prioriza funciones y muestra a otros proveedores de navegadores la importancia de admitirlas.
- Comparte c�mo piensas usarlo en la conversaci�n del discurso de WICG.
- Env�a un tweet a @ChromiumDev con el hashtag
#FileHandling
y perm�tenos saben d�nde y c�mo los usas.
V�nculos �tiles
- Explicaci�n p�blica
- Demostraci�n de la API de File Handling | Fuente de la demostraci�n de la API de File Handling
- Error de seguimiento de Chromium
- Entrada de ChromeStatus.com
- Componente de parpadeo:
UI>Browser>WebAppInstalls>FileHandling
- Revisi�n del TAG
- Posici�n de los est�ndares de Mozilla
Agradecimientos
Eric Willigers especific� la API de File Handling, Jay Harris y Raymes Khoury. Este art�culo fue revisado por Joe Medley.