stringtranslate.com

Esquema de URI de archivo

En programación, un esquema de identificador uniforme de recursos (URI) de archivo es un formato específico de URI , que se utiliza para identificar específicamente un archivo en un equipo host. Si bien los URI se pueden utilizar para identificar cualquier cosa, existe una sintaxis específica asociada con 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 path 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 al omitir host, no se omite la barra (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

Existen dos formas de representar los nombres de archivo UNC de Windows (como \\server\folder\data.xml). Ambas se describen en el Apéndice E de RFC 8089 como "no estándar". La primera forma (denominada aquí formato de 2 barras) consiste en representar el nombre del servidor utilizando la parte Authority del URI, que luego se convierte en file://server/folder/data.xml. La segunda forma (denominada aquí formato de 4 barras) consiste en representar el nombre del servidor como parte del componente Path , de modo que el URI se convierta en file:////server/folder/data.xml. Ambas formas se utilizan activamente. Microsoft .NET (por ejemplo, el método new Uri(path)) generalmente utiliza la forma de 2 barras; Java (por ejemplo, el método new URI(path)) generalmente utiliza la forma de 4 barras. Cualquiera de las dos formas permite utilizar con éxito las operaciones más comunes en los URI (resolver los URI relativos y desreferenciar para obtener una conexión con el archivo remoto). Sin embargo, debido a que estas URI no son estándar, algunas operaciones menos comunes fallan: un ejemplo es la operación normalizar (definida en RFC 3986 e implementada en el java.net.URI.normalize()método Java) que se reduce file:////server/folder/data.xmla la forma inutilizable file:/server/folder/data.xml. [6]

Ejemplos

Unix

Aquí hay dos ejemplos de Unix que apuntan al mismo archivo /etc/fstab :

archivo://localhost/etc/fstabarchivo:///etc/fstab

El entorno KDE utiliza URI sin un campo de autoridad:

archivo:/etc/fstab

Ventanas

A continuación se muestran 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.aviarchivo:///c:/WINDOWS/clock.avi

Aquí está la URI tal como la entiende la API de Windows Shell: [7]

archivo:///c:/WINDOWS/clock.avi

Tenga en cuenta que la letra de la unidad seguida de dos puntos y una barra es parte del URI de archivo aceptable.

Implementaciones

Ventanas

En los sistemas Microsoft Windows, los dos puntos normales (:) después de la letra de un dispositivo a veces se han reemplazado por una barra vertical (|) en las URL de archivos. Esto reflejaba la sintaxis original de la URL, que hacía que los dos puntos fueran un carácter reservado en una parte de la ruta.

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 en una URL, utilice UrlCreateFromPath, y para convertir una URL en una ruta, utilice PathCreateFromUrl. [7]

Para acceder a un archivo "el archivo.txt", se podría utilizar lo siguiente.

Para una ubicación de red:

archivo://nombredehost/ruta/al/archivo%20.txt

O para un archivo local, se omite el nombre de host, pero no la barra (observe la tercera barra):

file:// / 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 ruta UNC\\localhost\c:\path\to\the file.txt , lo que 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 que 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 aproximadamente los requisitos.

Utilice las funciones proporcionadas si es posible. Si debe 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), el esquema anterior le resultará útil.

URL heredadas

Para ayudar a la base instalada de aplicaciones heredadas en Win32, PathCreateFromUrlreconoce ciertas URL que no cumplen estos criterios y las trata de manera uniforme. Estas se denominan URL de archivo "heredadas", en contraposición a las URL de archivo "en buen estado". [8]


En el pasado, una variedad de otras aplicaciones han utilizado otros sistemas. Algunas agregaron dos barras adicionales. Por ejemplo, la ruta UNC \\remotehost\share\dir\file.txtse convertiría file:////remotehost/share/dir/file.txten lugar 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 pública, ya que implican que existe un archivo en el host designado. El especificador de host se puede utilizar para recuperar un archivo de una fuente externa, aunque no se especifica ningún protocolo específico de recuperación de archivos; y su uso debería generar un mensaje que informe al usuario de que no hay ningún mecanismo disponible para acceder a esa máquina.

Referencias

  1. ^ Kerwin, Matthew (febrero de 2017). El esquema URI de "archivo" (informe). Grupo de trabajo de ingeniería de Internet.
  2. ^ "¿Qué es un identificador uniforme de recursos (URI)?". WhatIs.com . Consultado el 12 de septiembre de 2023 .
  3. ^ RFC 8089, Sección 2
  4. ^ RFC 3986, Sección 3.2.2
  5. ^ RFC 3986, Sección 3.3
  6. ^ RFC 8089, Apéndice E
  7. ^ ab Risney, Dave (2006). "URI de archivos en Windows". IEBlog . Microsoft Corporation . Consultado el 2 de octubre de 2020 .
  8. ^ La extraña y triste historia de las URL 'file:' - Asociaciones libres - Página de inicio del sitio - Blogs de MSDN. Blogs.msdn.com (19 de mayo de 2005). Recuperado el 8 de marzo de 2014.