FAQ XMLRADConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 55, dernière mise à jour : 26 octobre 2006 

 
OuvrirSommaireFichiers

Le Framework XMLCLX fournit un XMLService XMLC_SendFile qui permet d'envoyer aisement un fichier du serveur vers le client. Cette opération s'appelle du streaming de fichier. Les développeurs peuvent aussi utiliser la méthode XMLRequest.SendFile dans leur gestionnaire d'événement.

Les applications XMLRAD8 sont livrées par défaut avec un XMLModule nommé XMLUtilsWM, qui fournies de nombreux services utiles. L'un d'entre eux, nommé XMLC_SendFile permet de charger un fichier du disque de la machine serveur et de l'envoyer au navigateur client. Ce XMLService accepte un paramètre XMLC_FileName, pris du Context, qui contient le chemin d'accès au fichier. Ce chemin est relatif par rapport au répertoire XMLC_DefaultDataDir des InitParams.

Le fichier doit être situé dans le répertoire XMLC_DefaultDataDir, ou dans l'un de ses répertoires fils (Voir la section Sécurité). Le paramètre des InitParams XMLC_AllowSendFile doit être initialisé à 1 pour que ce XMLService puisse fonctionner. Les chemins fournis au XMLService sont vérifiés pour éviter tout problème de sécurité.

Vous pouvez aussi utiliser la méthode XMLRequest.SendFile dans vos gestionnaires d'événement, pour obtenir une plus grande souplesse d'utilisation.

Delphi
Sélectionnez

begin
  ...
  XMLRequest.SendFile('D:\Data\Filename.zip', False);
end; 
JScript
Sélectionnez
{
  ...
  XMLRequest.SendFile("D:\Data\Filename.zip", False);
} 
C#
Sélectionnez
{
  ...
  XMLRequest.SendFile(@"D:\Data\Filename.zip", false); // Le caractère "@" déspécialise le caractère "\" 
} 
Java
Sélectionnez
{
  ...
  xmlRequest.sendFile("D:\\Data\\Filename.zip", false); 
} 

Le premier paramètre de la méthode est le chemin absolue d'accès au fichier. Le second paramètre indique à la méthode si elle doit précharger le fichier immédiatement ou non. Cela est utile lorsque l'on travaille avec des fichiers temporaires, qui peuvent être supprimés avant que l'envoie du fichier soit réellement fait. On demande dans ce cas à la méthode SendFile de précharger le fichier en mémoire directement, plutôt que d'attendre la fin de l'exécution de l'action.

Sécurité : Le téléchargement de fichiers peut être exploité pour récupérer un fichier quelconque du serveur (le fichier DataSources.xml, contenant le mot de passe du serveur SQL ou le fichier Security.xml, contenant tous les comptes et mots de passe utilisateurs). Les développeurs doivent absolument vérifier les téléchargements de fichiers, et pour plus de sécurité, les restreindre au répertoire Data seulement.

Les chemins relatives doivent être interdits, parce qu'ils peuvent ouvrir une brèche dans la sécurité. Les développeurs doivent vérifier le chemin d'accès au fichier pour assurer la sécurité. Par exemple, considérons l'exemple suivant :

<liste> <element>Chemin de l'application : C:\Data\MyApp</element> <element>Chemin du répertoire Data : C:\Data\MyApp\Data</element> <element>Nom de fichier demandé : ..\Bin\DataSources.xml</element> </liste>

Lorsque le chemin du répertoire Data et le nom de fichier demandé sont concaténés ensemble, le chemin d'accès finale est le suivant : D:\Data\MyApp\Bin\DataSource.xml. L'utilisateur mal intentionné qui a demandé ce fichier peut alors récupérer le fichier DataSources.xml contenant le mot de passe du serveur SQL.

Aller plus loin : La démo Gallery fournie avec XMLRAD 2005 utilise le XMLService XMLC_SendFile pour afficher les images stockées pour chaque contact.

Créé le 6 septembre 2004  par Nicolas.Cogi
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Developpez. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.