Articles sur : API

Utiliser l'API Leviia Drive pour transférer vos fichiers par segments - Curl

L'envoi de fichiers volumineux est toujours un peu problématique. Par exemple, votre connexion peut être interrompue, ce qui entraînera l'échec de votre envoi. Leviia dispose d'une API de segmentation dans laquelle vous pouvez envoyer des segments (chunk) plus petits qui seront assemblés sur le serveur une fois qu'ils seront tous envoyés.

Créer des segments de fichiers



CURL ne gérant pas la séparation d'un fichier en segments, vous devrez le faire vous-même.
Vous pouvez, par exemple, utiliser l'utilitaire split.

Exemple :
$ split -b 100m -d mon_fichier mon_fichier.part


Dans cet exemple, split va créer des segments de 100Mo sous la forme mon_fichier.partXX.

Exemple :
mon_fichier.part00
mon_fichier.part01
mon_fichier.part02
etc


Démarrer un envoi segmenté



Un envoi segmenté est géré dans 1 dossier. C'est l'emplacement vers lequel tous les segments sont envoyés.

Commencez par créer un dossier avec un nom unique. Vous pouvez utiliser le nom de votre fichier. Ou vous pouvez aussi générer un nom aléatoire avec, par exemple, l'utilitaire uuidgen, les chances de collision seront alors minimes.

Exemple :
$ uuidgen
5ba7f311-aee4-4cff-a17b-e003574b3ac2


Une fois le nom de votre dossier choisi, on peut le créer sur le serveur Leviia.

$ curl -X MKCOL -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2 \
    --header 'Destination: https://cloud.leviia.com/remote.php/dav/files/utilisateur/chemin_de_destination/mon_fichier'


Envoyer les segments



Une fois qu'un dossier pour les segments a été créé, nous pouvons commencer à les envoyer.

- Le nombre total de segments individuels est limité à un intervalle compris entre 1 et 10 000.
- Les segments seront assemblés dans l'ordre de leurs noms.
- La taille des segments doit être comprise entre 5Mo et 100Mo (sauf le dernier segment qui peut être plus petit).
- Pour vérifier le quota d'espace disponible de l'utilisateur, vous pouvez fournir dans l'en-tête la variable OC-Total-Length avec la taille totale (en octets) du fichier que vous voulez envoyer. Il rejettera le segment avec une erreur 507 Insufficient Storage. Si vous ne le fournissez pas, le téléchargement échouera uniquement à l’étape d’assemblage MOVE.

Dans l'exemple suivant, nous envoyons un fichier de 15Mo séparé en segments de 5Mo. Notez que vous devrez envoyer chaque segment un par un.

$ curl -X PUT -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2/1 \
    --data-binary @mon_fichier.part00 \
    --header 'Destination: https://cloud.leviia.com/remote.php/dav/files/utilisateur/chemin_de_destination/mon_fichier' \
    --header 'OC-Total-Length: 15000000'

$ curl -X PUT -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2/2 \
    --data-binary @mon_fichier.part01 \
    --header 'Destination: https://cloud.leviia.com/remote.php/dav/files/utilisateur/chemin_de_destination/mon_fichier' \
    --header 'OC-Total-Length: 15000000'

$ curl -X PUT -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2/3 \
    --data-binary @mon_fichier.part02 \
    --header 'Destination: https://cloud.leviia.com/remote.php/dav/files/utilisateur/chemin_de_destination/mon_fichier' \
    --header 'OC-Total-Length: 15000000'


Assembler les segments



Assembler les segments sur le serveur consiste à démarrer un MOVE depuis votre dossier d'envoi vers le dossier de destination.

Exemple :
$ curl -X MOVE -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2/.file \
    --header 'Destination: https://cloud.leviia.com/remote.php/dav/files/utilisateur/chemin_de_destination/mon_fichier' \
    --header 'OC-Total-Length: 15000000'


Annuler l'envoi



Si l'envoi doit être interrompu, il suffit de supprimer le dossier d'envoi que vous aviez créé.

Exemple :
$ curl -X DELETE -u utilisateur:motdepasse \
    https://cloud.leviia.com/remote.php/dav/uploads/utilisateur/5ba7f311-aee4-4cff-a17b-e003574b3ac2/

Mis à jour le : 19/02/2025

Cet article a-t-il répondu à vos questions ?

Partagez vos commentaires

Annuler

Merci !