SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

290 Plugins, 198 contribs sur SPIP-Zone, 92 visiteurs en ce moment

Accueil > Interactivité, échanges > Formulaires > CVT-Upload > CVT Upload

CVT Upload

2 octobre 2018 – par erational, Maïeul, Peetdu, RastaPopoulos

4 votes

CVT Upload fournit un interface générique de programmation (API), qui permet de gérer l’envoi d’un ou plusieurs fichiers par formulaire CVT. En cas d’erreur lors de la soumission du formulaire, les fichiers envoyés sont conservés temporairement dans SPIP afin que l’utilisateur·trice n’ait pas à les recharger.

Prérequis

Maitriser les formulaires CVT de SPIP.

Installation

Il s’installe comme tous les plugins.

Il nécessite le plugin Médias (livré par défaut avec SPIP).

Il est recommandé d’utiliser les plugins suivants :

  • Saisies : permet de simplifier la déclaration HTML d’upload de fichiers ;
  • Vérifier : propose des fonctions prêtes à l’emploi pour vérifier que les fichiers uploadés sont conformes à la demande (ex. : j’en veux un seul à la fois, uniquement format PDF, etc.).

Comment fonctionne CVT Upload

Pour rappel, un formulaire CVT distingue :
-  la vue du formulaire dans le fichier .html
-  la déclaration des valeurs par défaut des champs du formulaire : fonction _charger dans le fichier .php
-  la vérification des valeurs : fonction _verifier dans le fichier .php
-  le traitement du formulaire : fonction _traiter dans le fichier .php.

Pour faire fonctionner CVT Upload il faut ajouter, toujours dans le fichier .php, la fonction _fichiers. On déclarera dans cette fonction les name des fichiers à uploader.

CVT Upload par l’exemple

L’objectif ici est de :

  1. détailler le fonctionnement du formulaire #FORMULAIRE_TEST_UPLOAD fourni en démo dans le plugin ;
  2. fournir un exemple de traitement des fichiers uploadés.

Vous trouverez les fichiers :

  • test_upload.html, qui correspond à l’affichage du formulaire côté utilisateur·trice·s ;
  • test_upload.php, qui correspond à la déclaration des champs d’upload, à leur vérification, à leur upload.

…dans le répertoire /formulaires du plugin.

Dans le fichier HTML : test_upload.html

  1. dans la balise form, ajout de l’attribut enctype="multipart/form-data"
    1. <form method="post" action="#ENV{action}" enctype="multipart/form-data">


    …prérequis à la déclaration de champ de type <input type="file">. Ce n’est pas particulièrement du SPIP, mais du HTML de base.

  2. les appels aux uploads fournit avec la syntaxe de base.
    À noter que les fichiers ../demo/test_upload_saisie.html et test_upload_saisie.php fournissent une syntaxe plus simple s’appuyant sur le plugin SAISIES.

Dans le fichier PHP : test_upload.php

Trois points importants :

  1. Inclusion l’API CVT Upload, c’est à dire toutes les fonctions commençant par cvtupload_…(…) et qui pourraient servir ici.
    1. include_spip('inc/cvtupload');
  2. Création de la fonction formulaires_test_upload_fichiers() dans laquelle on doit retrouver le ou les name des inputs de type file déclaré(s) dans le fichier .html. C’est grâce à cette fonction que les mécanismes de CVT Upload s’activent.
    1. function formulaires_test_upload_fichiers() {
    2.         return array('seul', 'plusieurs', 'image', 'plusieurs_images','pdf');
    3. }

    Télécharger

  3. Dans la fonction _traiter, on récupère le tableau des fichiers uploadés à traiter [1]. Pour ce faire, il suffit d’utiliser _request('_fichiers') :
    1. function formulaires_test_upload_traiter() {
    2.         …
    3.         $fichiers = _request('_fichiers'); // hop, fichiers uploadés, récupérés ici pour traitement.
    4.         …
    5. }

    Télécharger

C’est maintenant à vous d’appliquer le traitement que vous voulez :

  • enregistrer les fichiers dans la médiathèque de votre site ;
  • envoyer un PDF par mail ;
  • etc.

Exemple de traitement : associer les uploads à un objet éditorial

Plus précisément associer les documents à l’article 1 du site.

  1. function formulaires_patates_traiter(){
  2.         // récupérer le tableau des données correspondants aux fichiers uploadés ou non
  3.         $fichiers = _request('_fichiers');
  4.        
  5.         if (is_array($fichiers) AND count($fichiers)) {
  6.                 // charger la fonction de chargement de document du plugin Medias
  7.                 $ajouter_documents = charger_fonction('ajouter_documents', 'action');
  8.  
  9.                 // associer les documents uploadé à l'article 1 du site
  10.                 foreach ($fichiers as $key => $value) {
  11.                         $nouveaux_docs  = $ajouter_documents('new', $fichiers[$key], 'article', '1', 'auto');
  12.                 }
  13.         }
  14.         return $retours;
  15. }

Télécharger

Notes : le dernier argument de la fonction $ajouter_documents a pour valeur ’auto’. Ainsi, c’est SPIP qui détermine automatiquement quel mode il doit donner pour chaque document.
Voir à ce propos le détail de la fonction ’ajouter_documents’

Voir en ligne : http://plugins.spip.net/cvtupload

Notes

[1CVT Upload propose une structuration différente de $_FILES, plus simple de manipulation. Il est toutefois possible de continuer à utiliser $_FILES si souhaité.

Dernière modification de cette page le 14 octobre 2018

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Menu animé déroulant

    16 août 2015 – 60 commentaires

    Barre de menu dynamique multi niveaux - adaptation aisée (?) des couleurs et dimensions - convient aussi aux petits écrans (mobiles).

  • Réservations multiples

    4 juillet – commentaires

    Permettre aux utilisateurs d’effectuer de réservations multiples (réserver pour plusieurs personnes à la fois ou réserver un événement plusieurs fois) Dépendances Saisies Réservation d’événements Introduction Il y a deux manières de multiplier les (...)

  • PHANTOM (HTML5UP)

    18 juillet – 32 commentaires

    Squelette SPIP pour intégrer le modèle Phantom de HTML5UP. https://html5up.net/phantom Installation A l’activation, le plugin installe aussi les plugins suivants : crayons, favicon, metasplus+, Couleur d’objet, champs extras, SPIP reset centre (...)

  • SPIPer Ipsum, l’évangile au quotidien

    28 décembre 2009 – 89 commentaires

    Ce plugin permet d’afficher les différentes lectures de l’évangile du jour et le saint du jour selon le calendrier fixé par l’Eglise catholique. Ce service est proposé par le site de L’Evangile au Quotidien dans plusieurs langues. Description Le (...)

  • ciparam : plugin « Configurateur de squelettes »

    29 novembre 2010 – 15 commentaires

    Ce plugin offre un mécanisme de sélection de forme de rubrique ou d’article, un mécanisme de variantes de chartes graphiques, la possibilité de choisir l’ordre de tri des articles dans les rubriques, un mécanisme de paramétrage de la page d’accueil, (...)