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%]"")
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 :
par :
FichierAffiche(fRepDonnées+[fSep]+sNomFichier)
|