PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Eléments mis à disposition
  • Upload via un champ de saisie de type Upload
  • Uploader un fichier dans une page
  • Afficher l'image à uploader
  • Remarque
  • Taille maximale des fichiers à uploader
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
L'upload est l'opération qui consiste à sauvegarder sur le serveur Web un fichier accessible sur le poste de l'internaute. Le fichier du poste de l'internaute est "uploadé" vers le serveur : il est chargé et enregistré sur le poste serveur.
L'upload de fichiers est possible pour tous les types de fichiers.
Quelques exemples d'utilisation de l'upload de fichiers :
  • Site de type annuaire : lors de l'ajout d'un nouveau contact dans l'annuaire, l'internaute peut sélectionner sur son poste la photo du contact. Pour être affichée quel que soit l'internaute, l'image est "uploadée" sur le serveur.
  • Site de type gestion documentaire : chaque internaute peut mettre à disposition de tous, divers types de documents : texte, ... Ces documents sont sélectionnés sur le poste de l'internaute et "uploadés" sur le serveur afin d'être consultable par tous les internautes.
Eléments mis à disposition
Pour gérer l'upload de fichiers, WEBDEV met à votre disposition :
  • un champ de saisie de type UPLOAD : Dans le navigateur, un bouton "PARCOURIR" est automatiquement ajouté à droite du champ de saisie de type Upload. Ce bouton permet à l'internaute de sélectionner le fichier à "uploader".
    Sous l'éditeur, un bouton gris apparaît. Ce bouton n'est pas modifiable (style, libellé, ...).
    Attention : ce champ de saisie est un champ spécifique : il est déconseillé d'utiliser les propriétés de type Valeur sur ce champ. Pour obtenir le nom du fichier uploadé, il est nécessaire d'utiliser la fonction UploadNomFichier. Le fonctionnement de l'upload ave ce type de champ est présenté dans le paragraphe Upload via un champ de saisie.
  • Versions 15 et supérieures
    un champ Upload (mono-fichier ou multi-fichiers) : Selon le type de champ choisi, plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Pour plus de détails, consultez Champ Upload.
    Nouveauté 15
    un champ Upload (mono-fichier ou multi-fichiers) : Selon le type de champ choisi, plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Pour plus de détails, consultez Champ Upload.
    un champ Upload (mono-fichier ou multi-fichiers) : Selon le type de champ choisi, plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Pour plus de détails, consultez Champ Upload.
    Versions 22 et supérieures
    un champ Upload (mono-fichier ou multi-fichiers) : Plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Ce champ peut être généré pour une exécution basée sur du Flash ou sur du HTML5. Pour plus de détails, consultez Champ Upload.
    Nouveauté 22
    un champ Upload (mono-fichier ou multi-fichiers) : Plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Ce champ peut être généré pour une exécution basée sur du Flash ou sur du HTML5. Pour plus de détails, consultez Champ Upload.
    un champ Upload (mono-fichier ou multi-fichiers) : Plusieurs champs sont automatiquement insérés dans l'éditeur, avec le code WLangage permettant de les utiliser immédiatement. Ce champ peut être généré pour une exécution basée sur du Flash ou sur du HTML5. Pour plus de détails, consultez Champ Upload.
  • deux fonctions serveur du WLangage :
    UploadCopieFichierEnregistre un fichier "uploadé" sur le serveur. Lors de cet enregistrement, il est possible de renommer le fichier enregistré sur le serveur.
    UploadNomFichierRenvoie le nom d'un fichier "uploadé" (nom d'origine du fichier, ou nom du fichier enregistré sur le serveur)
  • Versions 15 et supérieures
    un ensemble de fonctions navigateur du WLangage permettant de manipuler le champ Upload :
    UploadFichierEnCoursIndique le fichier en cours d'upload via le champ Upload.
    UploadLanceLance l'envoi des fichiers sélectionnés dans un champ Upload.
    UploadSupprimeSupprime un fichier de la liste des fichiers à uploader : le fichier ne sera pas uploadé sur le serveur.
    UploadSupprimeToutVide la liste des fichiers à uploader : aucun fichier ne sera uploadé sur le serveur.
    UploadTailleEnvoyéeFichierEnCoursRenvoie la taille (en octets) déjà envoyée du fichier en cours d'upload via un champ Upload.
    UploadTailleEnvoyéeRenvoie la taille totale (en octets) des fichiers déjà envoyés par l'upload en cours via un champ Upload.
    UploadTailleFichierEnCoursRenvoie la taille totale (en octets) du fichier en cours d'upload via un champ Upload.
    UploadTailleRenvoie la taille totale (en octets) des fichiers de l'upload en cours via un champ Upload.
    Nouveauté 15
    un ensemble de fonctions navigateur du WLangage permettant de manipuler le champ Upload :
    UploadFichierEnCoursIndique le fichier en cours d'upload via le champ Upload.
    UploadLanceLance l'envoi des fichiers sélectionnés dans un champ Upload.
    UploadSupprimeSupprime un fichier de la liste des fichiers à uploader : le fichier ne sera pas uploadé sur le serveur.
    UploadSupprimeToutVide la liste des fichiers à uploader : aucun fichier ne sera uploadé sur le serveur.
    UploadTailleEnvoyéeFichierEnCoursRenvoie la taille (en octets) déjà envoyée du fichier en cours d'upload via un champ Upload.
    UploadTailleEnvoyéeRenvoie la taille totale (en octets) des fichiers déjà envoyés par l'upload en cours via un champ Upload.
    UploadTailleFichierEnCoursRenvoie la taille totale (en octets) du fichier en cours d'upload via un champ Upload.
    UploadTailleRenvoie la taille totale (en octets) des fichiers de l'upload en cours via un champ Upload.
    un ensemble de fonctions navigateur du WLangage permettant de manipuler le champ Upload :
    UploadFichierEnCoursIndique le fichier en cours d'upload via le champ Upload.
    UploadLanceLance l'envoi des fichiers sélectionnés dans un champ Upload.
    UploadSupprimeSupprime un fichier de la liste des fichiers à uploader : le fichier ne sera pas uploadé sur le serveur.
    UploadSupprimeToutVide la liste des fichiers à uploader : aucun fichier ne sera uploadé sur le serveur.
    UploadTailleEnvoyéeFichierEnCoursRenvoie la taille (en octets) déjà envoyée du fichier en cours d'upload via un champ Upload.
    UploadTailleEnvoyéeRenvoie la taille totale (en octets) des fichiers déjà envoyés par l'upload en cours via un champ Upload.
    UploadTailleFichierEnCoursRenvoie la taille totale (en octets) du fichier en cours d'upload via un champ Upload.
    UploadTailleRenvoie la taille totale (en octets) des fichiers de l'upload en cours via un champ Upload.
Upload via un champ de saisie de type Upload

Uploader un fichier dans une page

Pour uploader un fichier dans une page :
  1. Créez un champ de saisie de type UPLOAD (le type du champ est défini dans l'onglet "Général" du champ). Grâce à ce champ, l'internaute pourra sélectionner le fichier à "uploader".
  2. Ajoutez un bouton ou un lien. Ce champ permettra de télécharger le fichier sur le serveur. Ce bouton ou lien doit être de type "Submit". Lors de la validation de la page grâce à ce bouton, le fichier est uploadé dans un répertoire temporaire du serveur. Ce fichier n'est donc pas visible pour les autres internautes.
  3. Dans le code de clic serveur de ce bouton ou lien, vous pouvez utiliser :
    • la fonction UploadNomFichier (par exemple UploadNomFichier(<Champ Upload>, Faux)) pour vérifier que le fichier a été uploadé et récupérer son nom. En effet, lors de l'upload, le fichier est renommé avec un nom de fichier temporaire.
    • la fonction UploadCopieFichier afin de copier et de renommer le fichier uploadé sur le serveur. Vous pouvez par exemple copier ce fichier dans le répertoire des ressources (_WEB) ou dans un répertoire accessible par un alias.
    • la fonction HAttacheMémo pour charger l'image dans une rubrique mémo d'un fichier HFSQL.
Attention : L'utilisation directe du nom de fichier sur le poste navigateur (lecture de la valeur par la propriété ..Valeur en code serveur ou navigateur) dans des fonctions de gestion de fichiers est une GROSSE erreur. En effet, cette manipulation fonctionne en mode développement (car le serveur est sur le même poste que le navigateur) mais PAS en déploiement. Dans ce cas, le serveur et le navigateur sont machines différentes. Le serveur ne voit pas les fichiers du navigateur. Pour obtenir les noms de fichiers à manipuler, utilisez UploadNomFichier.

Afficher l'image à uploader

Pour afficher l'image sélectionnée dans un champ de saisie de type Upload (SAI_ChampUpLoad) dans un champ Image (IMG_ChampImage) :
  1. Dans la fenêtre de description du champ Image (onglet "Général"), décochez l'option "Localiser l'image dans le répertoire _WEB en code navigateur".Dans la fenêtre de description du champ Image (onglet "Détail"), décochez l'option "Localiser l'image dans le répertoire _WEB en code navigateur".
  2. Dans le code de la page, ajoutez le code navigateur optionnel "souris déplacée" (OnMouseMove) .
  3. Saisissez le code suivant dans ce code :
    SI SAI_ChampUpLoad <> "" ALORS
    SI IMG_ChampImage <> SAI_ChampUpload ALORS
    IMG_ChampImage = SAI_ChampUpload
    FIN
    FIN
Remarque : Cette manipulation peut ne pas fonctionner selon le navigateur utilisé et le niveau de sécurité défini.
Remarque

Taille maximale des fichiers à uploader

Par défaut, la taille des fichiers à uploader est illimitée dans le moteur WEBDEV. Cette taille peut être limitée :
  • par le serveur Web utilisé. Pour plus de détails, consultez la documentation du serveur Web utilisé.
  • par le serveur d'application WEBDEV.
Si le fichier à uploader dépasse la taille limite, le fichier n'est pas uploadé.
Pour modifier la taille maximale des fichiers à uploader dans le serveur d'application WEBDEV, il est nécessaire de modifier la base de registre sur le serveur. Cette modification peut être réalisée pour toutes les applications WEBDEV.
Pour modifier la taille des fichiers uploadés pour toutes les applications WEBDEV :
  1. Sélectionnez la clé de registre suivante :
    • Sur un poste 64 bits : HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PC SOFT\WEBDEV\24.0
    • Sur un poste 32 bits : HKEY_LOCAL_MACHINE\SOFTWARE\PC SOFT\WEBDEV\24.0
  2. Ajoutez la clé de type chaîne MAX_UPLOAD. La valeur de cette clé correspond à la taille maximale des fichiers à uploader (en Ko).
Dans le cas d'un transfert important (plusieurs centaines de Mo), il est conseillé d'utiliser le protocole FTP et non pas l'upload. Il est possible d'effectuer un transfert FTP depuis une page WEBDEV, grâce à une applet Java créée avec WINDEV.
PHP Limites en PHP :
  • La taille des fichiers uploadés est limitée par les directives "upload_max_filesize" et "post_max_size" dans le fichier de configuration de PHP (fichier php.ini).
  • L'upload de fichiers doit être autorisé par le serveur PHP. Pour cela, la directive "file_uploads" doit être à "on" dans le fichier de configuration de PHP (fichier php.ini).
  • La directive upload_tmp_dir du fichier de configuration doit être renseignée vers un répertoire qui possède les droits en lecture/écriture.
Liste des exemples associés :
Upload ou Download d'un fichier Exemples unitaires (WEBDEV) : Upload ou Download d'un fichier
[ + ] Upload (copier vers le serveur) et download (télécharger depuis le serveur) d'un fichier :
- Copier un fichier du poste navigateur vers le poste serveur
- Télécharger un fichier présent sur le serveur
- Télécharger un fichier présent sur le serveur grâce à un lien
- Télécharger un fichier présent sur le serveur en demandant son ouverture
Version minimum requise
  • Version 9
Commentaires
Ne pas oublier le plugin Flash
Si le bouton du champ Upload permettant d'ouvrir la boite de dialogue de sélection du fichier à uploader semble ne pas réagir au clic, ou si le bouton apparait sous forme d'un rectangle gris sans texte, il est fort probable que le plugin Flash player ne soit pas installé sur navigateur en cours d'utilisation. Un autre article de PCSOFT sur le champ upload précise d'ailleurs qu'il est nécessaire d'avoir la version 9 ou supérieure de Flash.

Petite précision : sur une même machine, le plugin flash peut être installé (et fonctionner) pour un navigateur donné mais pas forcément pour les autres navigateurs éventuellement installés. Dans ce cas, il faudra refaire l'installation du plugin depuis les navigateurs qui posent problème.
LR9215
13 fév. 2016
Différence de comportement entre IE et Firefox
Lorsque le champ Upload a son état initial (Description > IHM > Etat initial) sur En affichage, la fenêtre de sélection de fichiers s'ouvre avec Firefox, mais pas avec Internet Explorer. Il faut mettre l'état initial sur "Actif", et la sélection est possible sur les deux navigateurs.
CV
09 nov. 2015