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 llamadascurl
. - 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. |
Sí | Sí |
m:node-url |
URL de este nodo. | Sí | Sí |
d:creationdate |
Registra la hora y la fecha en que se creó el recurso. | Sí | Sí |
d:displayname |
Proporciona un nombre para el recurso adecuado para presentarlo a un usuario. | Sí | Sí |
d:getcontentlength |
Tamaño de nodo en bytes. | Sí | Sí |
d:getetag |
Etiqueta electrónica única. | No | Sí |
d:getlastmodified |
Fecha de última modificación. | Sí | Sí |
d:quota-available-bytes |
Tamaño de almacenamiento gratuito disponible en bytes. | Sí | No |
d:resourcetype |
Contiene el elemento d:collection si el nodo es un directorio. |
Sí | Sí |
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
-
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. -
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 unaTARGET_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
- Cree una subida en el directorio de destino.
- Suba todos los fragmentos con la cabecera de respuesta <code>X-Upload-Chunk-Url</code>.
- 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--