Tome el control total de su almacenamiento mediante nuestra API

Si prefiere utilizar su solución personalizada para gestionar su almacenamiento de datos en línea, sin utilizar un navegador, puede usar nuestra API. En esta página encontrará ejemplos de cómo trabajar con nuestra API. Vamos a seguir ampliándola y añadiendo más información con el tiempo para que trabajar con la API sea lo más fácil posible para usted. Si tiene algún comentario, idea o pregunta sobre esta función, no dude en enviarnos un correo electrónico a support@myairbridge.com.

Conceptos básicos de WebDAV

Introducción

  • Puede usar curl en todas las llamadas.

Autenticación

  • Puede autenticarse con el encabezado de autenticación básica.
  • O simplemente añada --user "nombre de usuario:contraseña" a sus llamadas curl.
  • Para los directorios protegidos solo con contraseña, guest siempre funcionará como nombre de usuario (por ejemplo, guest:password).

Sobrescribir el encabezado

  • Si falta el encabezado, T es el valor por defecto.
  • F Valor = Los archivos y directorios de destino están protegidos contra la sobrescritura.
  • T Valor = Los archivos/directorios de destino se sobrescribirán si existen. Los directorios no se fusionan sino que se sustituyen por completo.

Obtenga detalles del nodo

  • PROPFIND El método HTTP se define en RFC2518.

Espacios de nombres XML

URI Prefijo
DAV: d:
https://xml.myairbridge.cloud/ns m:

Propiedades de los nodos

Propiedad Nota Dir Expediente
d:href Debe evitar usar esta URL. Solo está aquí por motivos de compatibilidad con los clientes WebDAV nativos. Utilice m:node-url en su lugar.
m:node-url URL de este nodo.
d:creationdate Registra la hora y la fecha en que se creó el recurso.
d:displayname Proporciona un nombre para el recurso adecuado para presentarlo a un usuario.
d:getcontentlength Tamaño de nodo en bytes.
d:getetag Etiqueta electrónica única. No
d:getlastmodified Fecha de última modificación.
d:quota-available-bytes Tamaño de almacenamiento gratuito disponible en bytes. No
d:resourcetype Contiene el elemento d:collection si el nodo es un directorio.

Ejemplo

curl -X PROPFIND 'DIRECTORY_URL'

Response:

<?xml version="1.0" encoding="utf-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:m="https://xml.myairbridge.cloud/ns">
  <d:response>
    <d:href>DIRECTORY_URL</d:href>
    <m:node-url>DIRECTORY_URL</m:node-url>
    <d:propstat>
      <d:prop>
        <d:creationdate>Mon, 01 Jan 2024 00:00:00 GMT</d:creationdate>
        <d:getcontentlength>123456</d:getcontentlength>
        <d:displayname>Directory name</d:displayname>
        <d:getlastmodified>Mon, 01 Jan 2024 00:00:00 GMT</d:getlastmodified>
        <d:resourcetype>
          <d:collection/>
        </d:resourcetype>
        <d:quota-available-bytes>5497558015424</d:quota-available-bytes>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  <d:response>
    <d:href>DIRECTORY_URL/SUBDIRECTORY</d:href>
    <m:node-url>DIRECTORY_URL/SUBDIRECTORY</m:node-url>
    <d:propstat>
      <d:prop>
        <d:creationdate>Mon, 01 Jan 2024 00:00:00 GMT</d:creationdate>
        <d:getcontentlength>0</d:getcontentlength>
        <d:displayname>Subdirectory name</d:displayname>
        <d:getlastmodified>Mon, 01 Jan 2024 00:00:00 GMT</d:getlastmodified>
        <d:resourcetype>
          <d:collection/>
        </d:resourcetype>
        <d:quota-available-bytes>5497558015424</d:quota-available-bytes>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
  <d:response>
    <d:href>DIRECTORY_URL/FILE</d:href>
    <m:node-url>DIRECTORY_URL/FILE</m:node-url>
    <d:propstat>
      <d:prop>
        <d:creationdate>Mon, 01 Jan 2024 00:00:00 GMT</d:creationdate>
        <d:getcontentlength>123456</d:getcontentlength>
        <d:displayname>File name</d:displayname>
        <d:getlastmodified>Mon, 01 Jan 2024 00:00:00 GMT</d:getlastmodified>
        <d:resourcetype/>
        <d:getetag>54e93f66461535114d8bc6745f66df38</d:getetag>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
</d:multistatus>

Crear un directorio

  • La carpeta principal debe existir.
curl -X MKCOL 'PARENT_DIRECTORY_URL/DIRECTORY_NAME'

Copia

  • Sobrescribe un archivo/directorio de destino de forma predeterminada.
  • Utilice Sobrescribir el encabezado para evitar la sobrescritura.

Copiar un archivo

curl -X COPY 'SOURCE_FILE_URL' -H 'Destination: TARGET_FILE_URL' -H 'Overwrite: F'

Copiar un directorio

curl -X COPY 'SOURCE_DIRECTORY_URL' -H 'Destination: TARGET_DIRECTORY_URL' -H 'Overwrite: F'

Copiar un directorio sin su contenido

curl -X COPY 'SOURCE_DIRECTORY_URL' -H 'Destination: TARGET_DIRECTORY_URL' -H 'Depth: 0'

Mover

  • Sobrescribe un archivo/directorio de destino de forma predeterminada.
  • Utilice Sobrescribir el encabezado para evitar la sobrescritura.

Mover un archivo

curl -X MOVE 'SOURCE_FILE_URL' -H 'Destination: TARGET_FILE_URL' -H 'Overwrite: F'

Mover un directorio

curl -X MOVE 'SOURCE_DIRECTORY_URL' -H 'Destination: TARGET_DIRECTORY_URL' -H 'Overwrite: F'

Eliminar

Eliminar un archivo

curl -X DELETE 'FILE_URL'

Eliminar un directorio

curl -X DELETE 'DIRECTORY_URL'

Descargar

Descargar un archivo completo

curl -L -o 'some.file' 'FILE_URL'

Descarga fragmentada

  1. Para garantizar que la versión actual del archivo se lea de forma coherente, primero debe obtener la URL de descarga.

    curl -i 'FILE_URL'
    

    Encabezados de respuesta:

    HTTP/1.1 303 See Other
    Location: https://...
    ...
    

    Si la redirección se realiza correctamente, la respuesta contiene el encabezado Ubicación, cuyo valor se utilizará para descargar partes del archivo. Esta URL se utiliza para garantizar que se lea esta versión concreta del archivo.

  2. Leyendo partes individuales del archivo. Por ejemplo, los primeros 500 bytes se descargan con un encabezado Range y se guardan en el archivo chunk_file.bin.

    curl -H 'Range: bytes=0-499' -o chunk_file.bin 'URL_FROM_LOCATION_HEADER'
    

Subir

  • Debe utilizar la URL m:node-url como una TARGET_DIRECTORY_URL.

Subir un archivo completo

  • Para conservar el nombre del archivo, utilice la URL del directorio de destino con una barra diagonal `/` al final.
  • Para cambiar el nombre del archivo, añada el nuevo nombre de archivo a la URL del directorio de destino.
curl -T 'path/to/some.file' 'TARGET_DIRECTORY_URL/'
curl -T 'path/to/some.file' 'TARGET_DIRECTORY_URL/NEW_FILE.NAME'

Subida fragmentada

  1. Cree una subida en el directorio de destino.
  2. Suba todos los fragmentos con la cabecera de respuesta <code>X-Upload-Chunk-Url</code>.
  3. Tras subir el último fragmento, el servidor crea automáticamente el archivo de destino.

Crear una subida

  • El nombre de la subida (X-Upload-Name) debe ser único en el directorio. No puede tener dos subidas simultáneas con el mismo nombre.
Encabezados
Cabecera Valor Descripción
Nombre X-Upload* Entre 1 y 128 caracteres UTF-8 Nombre de subida único en el directorio de destino.
Nombre de Expediente X* Entre 1 y 128 caracteres UTF-8 Nombre del archivo de destino.
Tamaño de archivo X* bytes Tamaño del archivo.
X-Last-Modified Marca de tiempo Unix Fecha de la última modificación del archivo. Si no se especifica, se utiliza la fecha actual.
Ejemplo de cURL
curl -i -X POST \
    -H 'X-Upload-Name: upload-name' \
    -H 'X-File-Name: target.filename' \
    -H 'X-File-Size: 1000000000' \
    -H 'X-Last-Modified: 1234567890' \
    'TARGET_DIRECTORY_URL/:chunked-upload'

Response headers:

HTTP/1.1 200 OK
X-Upload-Chunk-Url: https://...

Subir fragmentos de archivos

  • Al crear una subida fragmentada, se devuelve la cabecera X-Upload-Chunk-Url. Utilice esta URL para subir todos los fragmentos.
  • Los fragmentos se pueden subir en paralelo.
  • No es necesario seguir el orden de los fragmentos.
  • Los fragmentos no deben superponerse entre sí.
Encabezados
Cabecera Valor Descripción
Nombre de Expediente X* Entre 1 y 128 caracteres UTF-8 Nombre de subida único en el directorio de destino.
X-File-Range* Desplazamiento de origen a destino en bytes.
Ejemplo de cURL
curl -X PUT \
    -H 'X-Upload-Name: upload-name' \
    -H 'X-File-Range: 0-1048576' \
    'UPLOAD_CHUNK_URL'

Subir en lote

  • Acelera la subida de archivos pequeños.
  • El tamaño no debe superar los 100 MiB.
Ejemplo de cURL
curl -X PUT \
    -H 'Content-Type: multipart/form-data; boundary=BbC04y' \
    --data-binary '@bulk_upload.txt' \
    'TARGET_DIRECTORY_URL/:bulk-upload'

bulk_upload.txt (El CRLF debe usarse para los saltos de línea):

--BbC04y
Content-Disposition: file; name="file"; filename="file1.txt"
X-File-Size: 123

... file1.txt contents ...
--BbC04y
Content-Disposition: file; name="file"; filename="file2.txt"
X-File-Size: 299
X-Last-Modified: 1234567890

... file2.txt contents ...
--BbC04y--