Leer en inglés

Compartir a través de


Archivos

La API de administración de IIS proporciona un conjunto de API de archivo para interactuar directamente con el sistema de archivos. Esto significa que la API se puede usar local o remotamente para implementar contenido, realizar modificaciones o comprobar si los archivos están actualizados.

Archivos generales (/api/files)

El punto de conexión /api/files expone los metadatos y el contenido de archivos y directorios en el equipo. Los archivos disponibles a través de esta API se limitan a los especificados en la sección de configuración de archivos del archivo appsettings.json . Si consulta el punto de conexión /api/files sin especificar un directorio, se mostrarán las ubicaciones presentes en la configuración. Estas ubicaciones representan la raíz de todas las rutas de acceso del sistema de archivos disponibles a través de la API. Los archivos se pueden crear, eliminar y manipular con los verbos HTTP post, delete y patch estándar, siempre y cuando la ruta de acceso del archivo tenga las notificaciones necesarias para realizar la operación.

Ejemplos

Archivo

{
    "name": "iisstart.png",
    "id": "{id}",
    "type": "file",
    "physical_path": "C:\\inetpub\\wwwroot\\iisstart.png",
    "exists": "true",
    "size": "98757",
    "created": "2017-01-09T18:08:33.5130112Z",
    "last_modified": "2017-01-09T17:48:13.6180477Z",
    "last_access": "2017-01-09T17:48:13.6180477Z",
    "e_tag": "1d26aa08c67ed45",
    "parent": {
        "name": "wwwroot",
        "id": "{id}",
        "type": "directory",
        "physical_path": "C:\\inetpub\\wwwroot"
    },
    "claims": [
        "read",
        "write"
    ]
}

Directorio

{
    "name": "wwwroot",
    "id": "{id}",
    "type": "directory",
    "physical_path": "C:\\inetpub\\wwwroot",
    "exists": "true",
    "created": "2017-01-09T18:08:33.1380257Z",
    "last_modified": "2017-01-30T17:01:15.2619212Z",
    "last_access": "2017-01-30T17:01:15.2619212Z",
    "total_files": "7",
    "parent": {
        "name": "inetpub",
        "id": "a-nA1LZCBZ9jIqxr6e2uWg",
        "type": "directory",
        "physical_path": "C:\\inetpub"
    },
    "claims": [
        "read",
        "write"
    ]
}

Archivos de servidor web (/api/webserver/files)

El punto de conexión /api/webserver/files expone la estructura de archivos virtuales creada por IIS. Todos los recursos de archivo de este punto de conexión pertenecen a algún sitio web y la ruta de acceso de ese archivo es relativa al sitio web al que pertenece. Esto permite que los sitios web se traten como raíz del sistema de archivos, lo que es deseable en escenarios de servidor web. Los directorios virtuales se incluyen entre los directorios normales para obtener una vista completa de la jerarquía de archivos virtuales de un sitio web.

Todos los archivos de servidor web tienen una referencia a un file_info que es los metadatos de archivo que se pueden obtener del punto de conexión /api/files .

Ejemplos

Archivo web

{
    "name": "iisstart.png",
    "id": "{id}",
    "type": "file",
    "path": "/iisstart.png",
    "parent": {
        "name": "",
        "id": "{id}",
        "type": "application",
        "path": "/"
    },
    "website": {
        "name": "Default Web Site",
        "id": "{id}",
        "status": "started"
    },
    "file_info": {
        "name": "iisstart.png",
        "id": "{id}",
        "type": "file",
        "physical_path": "C:\\inetpub\\wwwroot\\iisstart.png"
    }
}

Directorio web

{
    "name": "imgs",
    "id": "{id}",
    "type": "directory",
    "path": "/imgs",
    "parent": {
        "name": "",
        "id": "{id}",
        "type": "application",
        "path": "/"
    },
    "website": {
        "name": "Default Web Site",
        "id": "{id}",
        "status": "started"
    },
    "file_info": {
        "name": "imgs",
        "id": "{id}",
        "type": "directory",
        "physical_path": "C:\\inetpub\\wwwroot\\imgs"
    }
}

Copiar o mover archivos (/api/files/copy | /api/files/move)

La API admite la copia y el traslado de archivos a través de los puntos de conexión /api/files/copy y /api/files/move . El proceso de copia de un archivo se realiza ejecutando una solicitud POST en la API que describe la operación de copia deseada.

POST

{
  "name":"{optional name of the destination file}",
  "file": {
    "id": "{id property of the file to copy}"
  },
  "parent": {
    "id": "{id property of the directory to copy to}"
  }
}

Manipular contenido de archivo (/api/files/content)

Los recursos de la ruta /api/files contienen solo metadatos para los archivos. Para manipular el contenido de un archivo, debe usar la ruta /api/files/content/{id} . Esta ruta usa el tipo de contenido application/octet-stream para transmitir datos. Al realizar una solicitud GET a la dirección URL de contenido de un archivo, se recuperarán los bytes sin procesar del archivo. Esta operación admite solicitudes de intervalo HTTP para que el archivo se pueda descargar en fragmentos. La realización de una solicitud PUT a la dirección URL de contenido del archivo reemplazará el contenido del archivo por el cuerpo de la solicitud. Esta operación admite solicitudes de intervalo de contenido HTTP para habilitar la manipulación aleatoria del acceso de los archivos.

Descargar 2º 500 bytes de un archivo

    GET /api/files/content/{id}
    Access-Token: Bearer {Access-Token}
    Range: bytes=500-999

Editar 2º 500 bytes de un archivo de 1000 bytes

    PUT /api/files/content/{id}
    Access-Token: Bearer {Access-Token}
    Content-Range: bytes 500-999/1000
    Content-Length: 500

Descargar archivos (/api/files/download)

Los archivos se pueden descargar a través del punto de conexión /api/files/content de la API. El inconveniente de este punto de conexión es que, puesto que se encuentra en la ruta de api , requiere un token de acceso. Esto significa que el archivo no se puede descargar a través de un explorador. El punto de conexión /api/files/download permite la creación de vínculos de descarga temporales. Estos vínculos de descarga son únicos, generados aleatoriamente y no requieren un token de acceso. Los vínculos de descarga generados tienen la forma de /downloads/{random_sequence}. Hay disponible un parámetro opcional de período de vida (ttl) al generar un vínculo de descarga para especificar cuánto tiempo debe estar disponible el vínculo de descarga. El valor predeterminado es cinco segundos.

Cuando se genera una descarga, se devuelve el vínculo de la descarga en el encabezado Location de la respuesta HTTP.

POST

{
    "file": {
        "id": "{id of the file to download}"
    },
    "ttl": "10000"
}

Uso de recursos compartidos de archivos

La API de archivos se puede usar para administrar archivos ubicados en recursos compartidos de archivos. Para habilitar esta funcionalidad, el recurso compartido de archivos debe permitir los permisos necesarios del sistema de archivos a la entidad de seguridad que representa la máquina en la que se ejecuta la API. Por ejemplo, supongamos que hay contenido compartido ubicado en \\share\images y queremos permitir que una API se ejecute en un servidor web denominado web-prod-1 para enumerar estos archivos. Para permitir esto, un administrador debe modificar la ACL del directorio \\share\images para permitir el acceso de lectura al objeto de Active Directory web-prod-1 . Una vez hecho esto, el servicio en la máquina web-prod-1 podrá acceder a este directorio, leer los archivos y, a continuación, exponerlos a través de la API.

Ubicaciones: raíces de API de archivo (/api/files/locations)

El acceso al sistema de archivos de la API se limita a un conjunto de carpetas raíz, denominadas ubicaciones, que se especifican en el archivo appsettings . Estas ubicaciones aparecen como raíces desde la perspectiva de la API de archivo, pero en la unidad física pueden estar carpetas anidadas, la raíz de una unidad o incluso un recurso compartido de red. Para cada ubicación, el acceso de lectura y escritura se controla de forma independiente. La API del sistema de archivos no verá las rutas de acceso del sistema de archivos que no se encuentran dentro de una ubicación.

A partir de la versión 2.2.0, se puede acceder a la configuración de ubicación a través del punto de conexión /api/files/locations . Este punto de conexión está bloqueado para los usuarios del grupo de usuarios propietarios de la API. Esto significa que la autenticación de Windows es necesaria para acceder al punto de conexión de ubicaciones. Agregar o quitar ubicaciones agregará o quitará el acceso del sistema de archivos de la API. Este punto de conexión admite GET, PATCH, POST y DELETE para crear, editar y eliminar ubicaciones existentes. Las ubicaciones de edición no tienen ningún efecto en los archivos físicos, solo manipula la vista de la API del sistema de archivos.

Configuración de ubicaciones predeterminadas

{
    "locations": [
        {
            "alias": "inetpub",
            "id": "{id}",
            "path": "C:\\inetpub",
            "claims": [
                "read"
            ]
        }
    ]
}