Il est courant pour un webservice REST d'avoir une fonction qui retourne un fichier du serveur (application, apk, image, binaire quelconque...), à l'application qui le consomme. Le webservice permet ainsi de télécharger un fichier (download).


Pour y parvenir, on pense spontanément à utiliser RENVOYER avec un buffer chargé par le fichier qui doit être renvoyé :

 

bufFichier est un buffer
bufFichier = fChargeBuffer(fRepDonnées+[fSep]+sNomFichier)
WebserviceEcritTypeMIME(typeMimeBinaire)
WebserviceEcritEntêteHTTP("Content-Disposition","attachment; filename="[%sNomFichier%]"")

RENVOYER bufFichier


Il y a cependant un inconvénient, en cas de fichier volumineux et/ou de demandes nombreuses, la mémoire consommée sur le serveur sera conséquente puisque le fichier sera chargé en mémoire à chaque demande. Il est possible d'éviter ce chargement en mémoire et de retourner directement le fichier ...

 

Rappelons que le webservice REST est hébergé par le serveur d'application de WEBDEV. On dispose donc de fonctions initialement à vocation web, mais utilisables dans un webservice ! Dans le cas présent, on peut donc appeler la fonction FichierAffiche. La fonction retourne directement le fichier par blocs, sans transfert complet en mémoire. On remplace simplement :

RENVOYER bufFichier

par :

FichierAffiche(fRepDonnées+[fSep]+sNomFichier)

 

< Retour

1 commentaire

Kad
24/09/2021 - 11:10 - Répondre
Bonjour Que mettre en format de réponse dans la descripttion ?

Publier un commentaire : 
Votre adresse email ne sera pas publiée