Comment télécharger des fichiers au sein d’un WebProcess?

Pour télécharger des fichiers au sein d’un WebProcess (ou de manière générale, depuis une page HTML), il faut utiliser un formulaire et un élément input de type file, par exemple:

    	<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="monAction">
    	Fichier à télécharger: <INPUT TYPE="FILE" NAME="fichier" /><BR />
    	<INPUT TYPE="SUBMIT" VALUE="Envoyer" />
    	</FORM>

« monAction » pouvant être par exemple le nom du WebScript qui devra traiter la requête.

Pour que les données du fichier soient téléchargées, et pas uniquement son nom, il est nécessaire de bien préciser le ENCTYPE à « multipart/form-data », les données seront alors disponibles dans le champ implicite « fichier_DATA ».

Si le fichier téléchargé est un fichier binaire (et non un fichier texte), il est nécessaire de post-fixer le nom du champs par ‘.data’ pour indiquer que le champs doit être récupéré de manière brute dans la String résultat, sans essayer de le convertir un chaîne.

    	var donneesFichier, nomFichier: String;

    	if ReadContextVar('Request.Params.VALIDATE')<>'' then begin
    	   donneesFichier:=ReadContextVar('Request.Params.FICHIER_DATA.data');
    	   nomFichier:=ReadContextVar('Request.Params.FICHIER_FileName');
    	end else // fichier non téléchargé

Pour plus d’information sur ENCTYPE, vous pouvez consulter la norme HTML, notamment https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4