En programación, un esquema URI de archivo es un formato específico de identificador uniforme de recursos (URI) que se utiliza para identificar específicamente un archivo en un ordenador. Si bien los URI pueden utilizarse para identificar cualquier cosa, existe una sintaxis específica asociada a la identificación de archivos. [ 1 ] [ 2 ]
Formato
Un URI de archivo tiene el formato
archivo:// host / ruta
donde host es el nombre de dominio completo del sistema en el que se puede acceder a la ruta , y ruta es una ruta de directorio jerárquica con el formato directorio / directorio /.../ nombre . Si se omite host , se toma como " localhost ", la máquina desde la que se interpreta la URL. Tenga en cuenta que cuando se omite host, la barra no se omite (mientras que "archivo:///piro.txt" es válido, "archivo://simpen.txt"No lo es, aunque algunos intérpretes logran manejar esto último).
RFC 3986 incluye información adicional sobre el tratamiento de los segmentos "." y "." en las URI.
Número de caracteres de barra inclinada
- La secuencia de caracteres de dos barras diagonales (//) después de la cadena " file:" indica que le sigue un nombre de host o el término literal "localhost" [ 3 ] , aunque esta parte puede omitirse por completo o contener un nombre de host vacío [ 4 ] .
- La barra diagonal simple entre host y ruta indica el inicio de la parte de ruta local de la URI y debe estar presente. [ 5 ]
- Por lo tanto, un URI de archivo válido debe comenzar con
file:/path(sin nombre de host),file:///path(nombre de host vacío) ofile://hostname/path. file://path(es decir, dos barras diagonales, sin nombre de host) nunca es correcto, pero se usa con frecuencia.- Las barras diagonales adicionales en la ruta separan los nombres de los directorios en un sistema jerárquico de directorios y subdirectorios. En este uso, la barra diagonal es una forma general e independiente del sistema de separar las partes, y en un sistema anfitrión en particular podría usarse como tal en cualquier ruta (como en los sistemas Unix).
Existen dos formas de representar los nombres de archivo UNC de Windows (como ). Ambas se describen en el Apéndice E de la RFC 8089 como "no estándar". La primera (denominada aquí formato de 2 barras) consiste en representar el nombre del servidor utilizando la parte Authority de la URI, que se convierte en . La segunda (denominada aquí formato de 4 barras) consiste en representar el nombre del servidor como parte del componente Path , de modo que la URI se convierte en . Ambas formas se utilizan activamente. Microsoft .NET (por ejemplo, el método ) generalmente utiliza la forma de 2 barras; Java (por ejemplo, el método ) generalmente utiliza la forma de 4 barras. Cualquiera de las dos formas permite utilizar con éxito las operaciones más comunes en URI (resolución de URI relativas y desreferenciación para obtener una conexión al archivo remoto). Sin embargo, debido a que estas URI no son estándar, algunas operaciones menos comunes fallan: un ejemplo es la operación normalize (definida en RFC 3986 e implementada en el método Java) que se reduce a la forma inutilizable . [ 6 ]\\server\folder\data.xmlfile://server/folder/data.xmlfile:////server/folder/data.xmlnew Uri(path)new URI(path)java.net.URI.normalize()file:////server/folder/data.xmlfile:/server/folder/data.xml
Ejemplos
Unix
Aquí hay dos ejemplos de Unix que apuntan al mismo archivo /etc/fstab :
archivo://localhost/etc/fstab archivo:///etc/fstab
El entorno KDE utiliza URI sin campo de autoridad:
archivo:/etc/fstab
Windows
Aquí hay algunos ejemplos que pueden ser aceptados por algunas aplicaciones en sistemas Windows, haciendo referencia al mismo archivo local c: \ WINDOWS \ clock.avi
archivo://localhost/c:/WINDOWS/clock.avi file:///c:/WINDOWS/clock.avi
Aquí está la URI tal como la entiende la API de Windows Shell: [ 7 ]
file:///c:/WINDOWS/clock.avi
Tenga en cuenta que la letra de la unidad seguida de dos puntos y una barra diagonal forma parte del URI de archivo aceptable.
Implementaciones
Windows
En los sistemas Microsoft Windows, los dos puntos (:) que aparecen después de la letra del dispositivo a veces se reemplazan por una barra vertical (|) en las URL de los archivos. Esto refleja la sintaxis original de las URL, que reservaba los dos puntos como carácter en la ruta de acceso.
Desde Internet Explorer 4 , las URI de archivos se han estandarizado en Windows y deben seguir el siguiente esquema. Esto se aplica a todas las aplicaciones que utilizan URLMON o SHLWAPI para analizar, obtener o vincular URI. Para convertir una ruta a una URL, utilice UrlCreateFromPath, y para convertir una URL a una ruta, utilice PathCreateFromUrl. [ 7 ]
Para acceder a un archivo llamado "el archivo.txt", se puede utilizar lo siguiente.
Para una ubicación de red:
archivo://nombredehost/ruta/al/archivo.txt
O para un archivo local, se omite el nombre de host, pero no la barra diagonal (nótese la tercera barra diagonal):
archivo:// / c:/ruta/al/archivo%20.txt
Esto no es lo mismo que proporcionar la cadena "localhost" o el punto "." en lugar del nombre de host. La cadena "localhost" intentará acceder al archivo como una ruta UNC\\localhost\c:\path\to\the file.txt , lo cual no funcionará ya que los dos puntos no están permitidos en un nombre de recurso compartido. El punto "." hace que la cadena se pase como \\.\c:\path\to\the file.txt, lo cual funcionará para archivos locales, pero no para recursos compartidos en el sistema local. Por ejemplo, file://./sharename/path/to/the%20file.txtno funcionará, porque hará que sharename se interprete como parte del espacio de nombres DOSDEVICES, no como un recurso compartido de red.
El siguiente esquema describe a grandes rasgos los requisitos.
- Debe utilizarse el símbolo de dos puntos, y no sustituirse por una barra vertical en Internet Explorer.
- Se deben usar barras inclinadas hacia adelante para delimitar las rutas.
- Los caracteres como la almohadilla (#) o el signo de interrogación (?) que forman parte del nombre del archivo deben codificarse en porcentaje .
- Los caracteres que no están permitidos en las URI, pero sí en los nombres de archivo, también deben codificarse como porcentaje. Por ejemplo, cualquier carácter que incluya " {}`^ " y todos los caracteres de control. En el ejemplo anterior, el espacio en el nombre del archivo se codifica como %20.
- Los caracteres permitidos tanto en las URI como en los nombres de archivo NO deben codificarse con porcentaje.
- No se deben usar codificaciones ACP antiguas. (Las páginas de códigos ACP se especifican mediante la configuración de idioma del CHCP de DOS o del Panel de control de Windows).
- Los caracteres Unicode que no pertenecen al rango ASCII deben codificarse en UTF-8 , y dichas codificaciones UTF-8 deben codificarse en porcentaje.
Utilice las funciones proporcionadas siempre que sea posible. Si necesita crear una URL mediante programación y no puede acceder a SHLWAPI.dll (por ejemplo, desde un script u otro entorno de programación donde no estén disponibles las funciones equivalentes), la descripción anterior le será de ayuda.
URL antiguas
Para ayudar a la base instalada de aplicaciones heredadas en Win32, PathCreateFromUrlreconoce ciertas URL que no cumplen con estos criterios y las trata de manera uniforme. Estas se denominan URL de archivo "heredadas" en contraposición a las URL de archivo "sanas". [ 8 ]
En el pasado, diversas aplicaciones han utilizado otros sistemas. Algunas añadieron dos barras diagonales adicionales. Por ejemplo, la ruta UNC \\remotehost\share\dir\file.txtse convertiría en file:////remotehost/share/dir/file.txtlugar de "healthy" file://remotehost/share/dir/file.txt.
Páginas web
Las URL de archivos rara vez se utilizan en páginas web de Internet, ya que solo son útiles si se sabe que un archivo específico existe en el host designado o en el ordenador local. Además, por motivos de seguridad, los navegadores web suelen deshabilitar las URL de archivos en las páginas web que no se cargaron a partir de una URL de archivo. [ 9 ]
El especificador de host se puede usar para recuperar un archivo de una fuente externa. Sin embargo, no se especifica ningún protocolo de recuperación de archivos en particular y la interpretación del especificador de host no está bien estandarizada, por lo que solo resulta útil en circunstancias específicas.
Si una página web quiere acceder a archivos almacenados en el ordenador donde se ejecuta el navegador web, una alternativa moderna a las URL de archivos es la API de archivos de HTML5 .
Referencias
- ↑ Kerwin, Matthew (febrero de 2017). El esquema URI "file" (Informe). Grupo de trabajo de ingeniería de Internet.
- ↑ "¿Qué es un identificador uniforme de recursos (URI)?" . WhatIs.com . Consultado el 12 de septiembre de 2023 .
- ↑ RFC 8089, Sección 2
- ↑ RFC 3986, Sección 3.2.2
- ↑ RFC 3986, Sección 3.3
- ↑ RFC 8089, Apéndice E
- 1 2 Risney, Dave (2006). "URI de archivos en Windows" . IEBlog . Microsoft Corporation . Recuperado el 2 de octubre de 2020 .
- ↑ La extraña y triste historia de las URL 'file:' - Asociaciones libres - Página principal - Blogs de MSDN . Blogs.msdn.com (19 de mayo de 2005). Consultado el 8 de marzo de 2014.
- ↑ "¿Por qué los enlaces locales están deshabilitados por defecto en los navegadores modernos?" . Information Security Stack Exchange . Consultado el 13 de marzo de 2025 .
- Estándares de Internet
- Identificadores
- esquemas URI