Carnet Wiki

CVT Upload

CVT Upload est un plugin qui fournit des méthodes d’upload d’un ou d’un ensemble de fichiers au formulaire CVT.

C’est donc un plugin pour développeur, pas un plugin Plug ’n Play.

Doc en brouillon. Merci de compléter et corriger

Prérequis

Maitriser les formulaires CVT de SPIP

Installation

Il s’installe comme tous les plugins.

Il nécessite le plugin Médias (toujours livré 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.)

CVT Upload par l’exemple

Nous allons détailler le fonctionnement du formulaire #FORMULAIRE_TEST_UPLOAD fourni en démo dans le plugin et nous allons aller un peu plus loin en fournissant un exemple de traitement des fichiers uploadés.

Vous trouverez les fichiers

  • test_upload.html
  • test-upload.php
    …dans le répertoire /formulaires du plugin.

L’appel à ce formulaire ce fait comme suit

  1. #FORMULAIRE_TEST_UPLOAD

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">

  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_nom_de_mon_formulaire_fichiers() dans laquelle on déclare le ’name’ des fichiers à uploader. C’est grâce à cette fonction et les déclarations contenus 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 à uploader toujours comme ceci :
    1. function formulaires_test_upload_traiter() {
    2.         …
    3.         $fichiers = _request('_fichiers'); // hop, fichiers à uploader 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 (isset($fichiers) AND is_array($fichiers) AND count($fichiers) > 0) {
  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 qu’elle mode il doit donner pour chaque document.
Voir à ce propos le détail de la fonction ’ajouter_documents’


Note : si vous utilisez CVT Upload dans un formulaire de l’espace privé, vous devrez déclarer dans un fichier mes_options.php la variable « $filtrer_javascript = 1 ; », sans quoi, en cas d’un retour erreur de Verifier, les vignettes d’images ne seront pas traités.

erational - Mise à jour :17 août 2018 à 11h23min