-
    Techniques et conseils

Note: L'ensemble des "Tips of the Week" de l'éditeur OmniPilot sont régulièrement traduits chaque semaine. Vous les retrouvez ci-après

LISTE DES TUTORIAUX

Formatage de nombres et calculs FileMaker Pro sous Lasso

Passer facilement de FileMaker Pro CDML à Lasso Professional 8

Outil de Maintenance MySQL

Indicateur de progression - Progress bar

Uploads de fichiers sous Lasso Professional 8

Utilisation des arrays pour la création d'inlines dynamiques

Balises de gestion du Cache

Méthodes d'appel des balises

Encryption de données

Notions de Sessions

Gestion des erreurs

Pages d'erreur customisées

Variables globales

Optimisations de MySQL

Symboles d'assignation mathématiques

Expression régulières (Nettoyage du texte)

Expressions régulières (Rechercher/remplacer)

Expressions régulières (principes de base)

Optimisez votre code HTML en utilisant les balises [Loop] et [Iterate]

Utilisation des boucles (Loops)

Utilisation de la balise [Action_Params]

Techniques de commentaires


     
Blueworld, Windows Server 2003, Windows XP, RedHat, Linux, Mac OS X, MACOS, Apache, MySQL, FIlemaker Pro

Edité par OmniPilot Software, Lasso Professional fonctionne sous Windows 2000/2003/XP et Linux RedHat et Apache Server - Il s'intègre parfaitement à MySQL™ et FileMaker Pro™ ainsi que toutes autres bases de données
     




Déposez votre nom de domaine avec ELIDEE

Sujet: Uploads de fichiers sous LP8

Cet article discute des améliorations dans l'upload de fichiers sous Lasso Professional 8 et de la nouvelle balise [File_ProcessUploads].

Introduction

Lasso Professional rend possible la capture de fichiers uploadés à travers un navigateur web. Cet article décrit les mécanismes généraux de transferts par upload, des balises qui peuvent être utilisées dans LP8 pour procéder de tels fichiers et des paramètres de sécurité nécessaires.

L'upload de fichier est une fonction du protocole HTTP qui est supportée par tous les navigateurs et serveurs Web. De la même façon qu'un email peut comprendre plusieurs pièces jointes (fichiers attachés) un formulaire HTTP peut inclure un ou plusieurs fichiers. Il revient au serveur Web de déterminer ce qui doit être fait des fichiers uploadés une fois qu'il les a reçus.

Un aspect intéressant dans l'upload de fichiers est que n'importe quel navigateur Web peut uploader un fichier sur n'importe quel serveur Web. Habituellement les fichiers sont seulement téléchargés en réponse à un formulaire incluant des inputs de type FILE, mais n'importe quel formulaire (ou requête POST) peut inclure des fichiers qu'ils aient été prévu pour ou non. Que des fichiers puissent être inclus sans que cela ait été prévu est important afin que vous les traitiez avec la même suspicion que avez déjà avec n'importe quelle pièce jointe d'email reçu.

Chaque fichier uploadé sur Lasso est accompagnié d'une page de requête Lasso (dans le cas le fichier uploadé est manipulé directement et uniquement par le serveur Web). Lasso manipule les fichiers uploadés en les plaçant dans le répertoire des fichiers temporaires du serveur Web en les nommant de manière unique du type "12345689.uld" (chiffre généré de façon aléatoire). Le nom unique rend particulièrement difficile à un autre logiciel que Lasso de deviner le nom du fichier uploadé. Enfin, l'extension .uld rend impossible l'exécution du fichier sur le serveur.

Aussitôt que Lasso a executé le process de la page de requête, il détruit tous les fichiers uploadés avec cette requête. Cela signifie que les fichiers uploadés n'existent sur le serveur Web que le temps d'exécution par Lasso de la page de requête utilisée pour leur transfert. Si vous souhaitez conserver tous les fichiers uploadés alors ils sera nécessaire de les copier hors du répertoire des fichiers temporaires lors de l'exécution de la page de requête.

HTML pour l'upload de fichiers

La première étape dans la création d'une solution d'upload de fichiers est de créer un formulaire HTML requêtant un upload de fichier depuis le client du visiteur du site. Afin d'envoyer un fichier par upload le type d'encodage (ou "enctype") du formulaire doit être précisé à "multipart/formdata". Ceci est analogue à ce qui est fait pour les emails qui sont également multipart lorsqu'ils contiennent des pièces jointes.

Les fichiers sont téléchargés à travers un nagigateur Web en utilisant le type "file" pour l'input. Ceci crée un contrôle que la plupart des navigateurs interprètent en précisant le chemin du fichier suivi d'un bouton "sélectionner" ou "choisir". Lorsque l'utilisateur clique sur le bouton il lui est présenté une boîte de dialogue lui demandant de sélectionner quel fichier il souhaite uploader.

Ce code souce génère un formulaire d'upload:

<form response="[Response_FilePath]" enctype="multipart/formdata" method="POST">
<p>Fichier uploadé: <input type="file" name="file_upload" value="">
<p><input type="submit" name="file_action" value="Upload">
</form>

Fichier uploadé:

L'input "file" peut être inclut au milieu d'inputs de type text, textarea, etc. Un fichier peut être uploadé sur n'importe quel formulaire disposant d'un enctype approprié ainsi que de l'input "file". Plusieurs fichiers peuvent être uploadés en incluant plusieurs inputs de type "file". Si nécessaire, les différents inputs peuvent être distingués en leur donnant différents noms.

File Uploads Array

Lasso fournit des informations sur les fichiers qui ont été uploadés avec l'array [File_Uploads]. Cet array contient les informations des fichiers qui ont été uploadés avec la page de requête courante.

L'array [File_Uploads] contient un tableau (map) pour chaque fichier uploadé. Chaque tableau contient les éléments suivants:

array contains a map for each file uploaded. Each map has the following elements:

Param - le nom de l'input du formulaire sur lequel le fichier a été uploadé. File - un objet de type fichier représentant le fichier uploadé dans le répertoire temporaire. Size - la taille en bytes du fichier uploadé. Path - le chemin du fichier uploadé dans le répertoire temporaire. Type - le type MIME du fichier uploadé. OrigName - le nom original du fichier uploadé. OrigExtension - l'extension originale du fichier uploadé.

Le tableau contient également les mêmes éléments que ceux figurant dans les versions précédentes de Lasso incluant Upload.Type, Upload.FieldName, Upload.RealName, Upload.Size et Upload.Name. Ces éléments ne sont disponibles que pour des besoins de compatibilité avec les versions précédentes de Lasso. Notez que OrigName ne fournit que le nom du fichier alors que Upload.RealName fournit également le chemin complet du fichier s'il avait été inclut par le navigateur (par exemple C:/images/fichier.txt).

La plupart de ces informations sont fournies par le navigateur Web lui-même, incluant le nom original, l'extension du fichier et son type MIME. Le chemin, la taille et le fichier sont fournis par Lasso. L'élément file sera valide seulement si l'utilisateur courant dispose des permissions d'accéder aux fichiers dans le répertoire temporaire (cf ci-après).

Sécurité dans l'upload de fichiers

De manière à pouvoir manipuler les fichiers uploadés ces derniers doivent être déplacés du répertoire temporaire vers un espace permanent. Pour réaliser ceci vous devez utiliser les balises "file" de Lasso et utiliser ces balises requiert des permissions paramétrées dans l'administration du Site. La procédure suivante créera un groupe et un utilisateur ayant accès aux balises file:

- Ouvrez Site Administration à une adresse telle que celle là: http://www.exemple.com/SiteAdmin.LassoApp.

- Aller sur l'onglet Setup > Security > Groups. Ajoutez un nouveau groupe appelé "File Uploads".

- Allez ensuite sur l'onglet Setup > Security > Users. Ajoutez un utilisateur avec un mot de passe et assurez-vous qu'il soit dans le groupe "File Uploads". Notez bien précisieusement le nom du user et son mot de passe.

- Aller sur l'onglet Setup > Security > Files. Assurez-vous que le groupe "File Uploads" est bien sélectionné dans la barre de menus du haut.

- Cliquez sur "Allow File Uploads". Utilisez le formulaire pour uploader un petit fichier et cliquez sur "test". Cela vous confirmera l'emplacement du répertoire temporaire sur votre serveur Web.

- Cliquez sur "Add Path" et "add permission" pour l'utilisateur du groupe de manière à ce qu'il puisse accéder au répertoire temporaire des fichiers uploadés. Par exemple, si vous ajoutez le chemin "/uploads/". alors les utilisateurs seront autorisés à copier des fichiers dans le répertoire situé sur "http://www.exemple.com/uploads/". Ajouter le chemin "/" permettra aux utilisateurs l'accès de n'importe quel fichiers à la racine du serveur Web. Cliquez "Allow All" pour créer le nouveau droit. Ne cochez pas "Allow Any File Extensions".

Maintenant, l'utilisateur que vous avez créé dans le groupe "File Uploads" possède les permissions d'accéder au répertoire temporaire des fichiers qui seront uploadés ainsi que vers le répertoire de destination. Le nom d'utilisateur et son mot de passe seront utilisés dans les étapes qui suivent.

Traiter les fichiers uploadés

Lasso 8 inclut une nouvelle balise [File_ProcessUploads] qui rend plus simple la copie de fichiers uploadés vers un répertoire de destination. Cette balise doit être exécuté par le user qui en a les autorisations en l'appelant dans un inline spécifiant le nom du user et son mot de passe comme ceci:

[Inline: -Username='JohnDoe', -Password='MySecretPassword'] [File_ProcessUploads: ...] [/Inline]

La balise requiert un paramètre qui est le répertoire de destination pour les fichiers uploadés. Le répertoire de destination sera créé s'il n'existe pas encore. Chaque fichier sera restitué sous son nom original lorsqu'il seront déplacés du répertoire temporaire. Par exemple, le code suivant va déplacer les fichiers uploadés vers le répertoire "/Uplaods/":

[Inline: -Username='JohnDoe', -Password='MySecretPassword'] [File_ProcessUploads: -Destination='/Uploads/'] [/Inline]

Cette balise doit obéir à la fois aux permissions de fichiers de Lasso et aux paramètres régissant les extensions de fichiers autorisés par Lasso. Seuls les fichiers dont les extensions sont incluses dans les paramètres File Tags dans l'onglet Setup > Site > File Extensions seront déplacés par cette balise (si "Allox Any File Extension" n'avait pas été coché pour le répertoire de destination). Par exemple, les fichiers .exe ne seront pas traités, mais la plupart des images, fichiers PDF, fichiers textes et HTML le seront.

La balise accepte un nombre de paramètres optionnels qui peuvent restreindre le traitement des fichiers déplacés.

-MaxSize spécifie la taille maximale du fichier en bytes. Par exemple, pour limiter les fichiers à 32 ko on paramètrera -MaxSize=32768

-Extensions peut se voir préciser une liste d'extensions autoriés. Seules les extensions présentes dans cette liste seront traitées. Par exemple -Extensions=(Array: '.gif', '.jpg') ne traitera que les fichiers GIF et JPEG.

Deux paramètres additionnels de contrôle des fichiers existent. -FileOverWrite permettra d'écraser des fichiers déjà présents dans le répertoire de destination et ayant le même nom. -UseTempNames déplacera les fichiers en utilisant leur nom temporaire "123456789.uld" au lieu de leur nom original.

Note - si vous obtenez une erreur "unknown error" depuis la balise [File_ProcessUploads] c'est que probablement vous n'avez pas les autorisations nécessaires sur votre système de fichier pour créer le répertoire de destination. Vérifiez les autorisations de fichiers sur ce répertoire de manière à vous assurer que Lasso peut accéder à ce répertoire puis re-essayez.

Traiter les fichiers uploadés manuellement

Vous pouvez utiliser les balises "file" pour traiter manuellement chaque fichier uploadé. Ceci vous donne une flexibilité plus grande que dans l'utilisation de la balise [File_ProcessUploads] car le contenu de chaque fichier uploadé peut être inspecté plus attentivement et les fichiers peuvent être déplacés vers le répertoire de destination avec des noms spécifiques ou dans d'autres destinations basées sur leur type, etc.

Le code suivant copiera n'importe quel fichier .gif de taille inférieure à 32 ko vers le répertoire /Destination/Nouveau_nom.gif, écrasant le fichier de même nom qu'il contient déjà.

[Iterate: (File_Uploads), (Var: 'temp')] [If: ($Temp->(Find: 'Size') < 32768) && ($Temp->(Find: 'OrigExtension') >> 'gif')] [File_Copy: $Temp->(Find: 'Path'), '/Destination/Nouveau_nom.gif', -FileOverWrite] [/If] [/Iterate]

Il est recommandé d'utiliser la balise [File_Copy] au lieu de [File_Move] de manière à ce que les permissions sur le fichier soient créées de zéro au lieu d'hériter des permissions du fichiers qui a été créé dans le répertoire temporaire.

Plus d'informations

Plus d'informations peuvent être trouvés sur les Upload de fichiers dans le chapitre "Files" du manuel "Lasso 8 Language Guide" ou sur la référence en ligne de Lasso 8 LDML Reference..


     
Retour accueil
Lasso Studio
Lasso Professional
Communiqués Presse
Tutoriaux
Lasso & Filemaker
Evaluation gratuite
Hébergement Lasso/MySQL
Revendeurs
Historique logiciel
Tarifs - Commander
Nous contacter
     

Notre numéro de téléphone : +33 5 57 22 89 35

Hébergement mutualisé Lasso




Hébergement et location de baies de serveurs et Transit IP par ELIDEE


-  Accueil  -  Développer avec Lasso Studio  -  Déployer avec Lasso Professional  --
Administration du site webmaster@elidee.com | Copyright 2004-2010, Elidée SARL. Tous droits réservés
Toutes les marques citées sont déposées par leur propriétaire respectif