SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Interactivité, échanges > Formulaires > Formidable > Envoyer des fichiers avec un formulaire Formidable

Envoyer des fichiers avec un formulaire Formidable

2 janvier 2017 – par Maïeul – 57 commentaires

15 votes

La version 3.0.0 du plugin Formidable permet de créer des formulaires comprenant des envois de fichiers. Cet article regroupe la documentation relative à cette fonctionnalité. Pour une présentation générale de Formidable, voir « Formidable, le générateur de formulaires ».

Configuration requise

Afin de pouvoir accéder à la fonction d’envoi de fichiers il vous faut :

  • Le plugin CVTupload dans sa version 1.9.4 au minimum. Attention, il reste possible d’activer Formidable sans avoir ce plugin. Simplement, il sera alors impossible d’envoyer des fichiers avec Formidable.
  • Le plugin Formidable en version 3.0.0, lequel nécessite notamment :
    • le plugin Saisies en version 2.17.0 au minimum ;
    • le plugin Vérifier en version 1.4.1 au minimum.

Configuration des fichiers à envoyer

Lors de la création d’un formulaire, il est possible de choisir un champ de type « Fichier(s) ».

Insertion d’un nouveau champ d’envoi de fichiers

Ce type de champ possède un certain nombre de propriétés configurables. Certaines, telles le titre, sont communes à l’ensemble des champs proposés par Formidable. Nous ne nous attarderons pas dessus, et n’exposerons que les propriétés spécifiques au type de champ « Fichier(s) ».

Accéder à la configuration d’un champ « Fichier(s) »

Nombre de fichiers

Dans la configuration du champ, l’onglet « Utilisation » permet de choisir le nombre de fichiers à envoyer pour ce champ. Par défaut, la valeur est 1.

Configuration du nombre de fichiers par champ

Notez qu’il s’agit du nombre de fichiers pour ce champ, mais qu’il est possible d’ajouter des champs supplémentaires pour d’autres fichiers, ce qui permet de distinguer les fichiers selon les besoins.

Pour l’instant, chaque fichier est associé à un input unique, afin d’être compatible avec un maximum de navigateur. Dans le futur, des versions améliorées de la saisie pourront être disponibles pour améliorer l’ergonomie.

Exemple de champ permettant d’envoyer un seul fichier
Exemple de champ permettant d’envoyer plusieurs fichiers

Notez que si un·e internaute triche et modifie le HTML afin d’envoyer plus de fichiers, le système n’enregistrera pas plus de fichiers que configurés.

Puisque chaque fichier est associé à un input unique, chaque input reçoit un label individuel. Il est cependant possible de désactiver ce label pour n’afficher que le label commun à l’ensemble des fichiers.

Validation

L’onglet « Validation » de la configuration du champ permet de régler les propriétés des fichiers envoyés.
Cet onglet est assez long, car il permet de choisir finement les types de fichiers autorisés à l’envoi.

Présentation globale des options de vérification d’un champ d’envoi de fichiers

Caractère obligatoire

La première option dans cet onglet, est, comme pour tous les champs, le caractère obligatoire ou non de l’envoi de fichier.

Notez que dans le cas d’un champ permettant d’envoyer plusieurs fichiers, on considère que l’obligation d’envoi est remplie à partir du moment où un fichier est envoyé. Si vous souhaitez imposer l’envoi de trois fichiers, il vous faut créer trois champs [1].

Type Mime et extension

Une première série de boutons radio permet de choisir types de fichiers sont autorisés :

  • Autoriser tous les types et extensions cette option est très déconseillée ;
  • Autoriser tous les types Mime et extensions connues de SPIP dans sa table spip_types_documents [2] ;
  • Autoriser uniquement les les images web (gif, jpg, png) (.jpg, .png, .gif) ;
  • Autoriser uniquement les types et extensions sélectionnés parmi les cases à cocher ; utile par exemple pour n’autoriser que l’envoi de pdf. Les cases à cocher de choix de type n’apparaissent que si on choisit cette option.

Notez les points suivants :

  • Dans tous les cas, Formidable zippera automatiquement les fichiers d’un type et/ou d’une extension absente de la table spip_types_documents, afin notamment d’empêcher son exécution sur le serveur.
  • Si vous choisissez l’option « Tous les types Mime et extension autorisés par SPIP » ou « Un type Mime associé à une extension précisée ci-dessous » la vérification se fera :
    • la plupart du temps, sur la base du type Mime détecté par PHP et de l’extension du fichier
    • lorsque PHP détecte un type Mime text/plain ou application/octet-stream, qui sont très génériques, sur la seule base de l’extension [3].

Taille du fichier

La taille du fichier est, de facto, limitée par la configuration de votre serveur. Souvent par défaut, 32 kio [4].

L’ami Marcimat travaille actuellement sur un projet « BigUp » qui permet d’envoyer des fichiers plus gros. Si cela est nécessaire pour vos besoins, le contacter.

En dehors même des limites techniques, il peut être utile de limiter pour des raisons éditoriales la taille des fichiers envoyés. Pour cela, il vous suffit de remplir le champ « taille » en indiquant une taille maximale en kio.

Notez ces deux points :

  • la vérification de la taille a lieu après l’envoi du fichier sur le serveur
  • la vérification de la taille se comprend fichier par fichier, et non pour l’ensemble des fichiers d’un même champ.

Dimension de l’image

Une dernière série de réglages permet de vérifier la dimension des images envoyées.

Configuration de la dimension d’une image

Notez qu’il faut dans ce cas s’assurer que le document envoyé est bien une image en choisissant la bonne option auparavant. De plus, la fonction utilisée pour déterminer la taille de l’image est getimagesize(), qui ne comprend pas tous les types d’images.

Il est possible de préciser une largeur maximum (en pixels) et une hauteur maximum (en pixels). Une option permet également d’autoriser les images qui rentrent dans ces dimensions lorsqu’on les tourne de 90°.

Configuration des traitements

Comme pour tous les formulaires Formidable, un formulaire proposant l’envoi de fichier peut enregistrer les réponses et/ou les envoyer par courriel. Il n’y a rien de particulier à faire dans le cas qui nous occupe. Cependant, notez ces deux points :

  • Au moment de l’enregistrement des traitements, Formidable vérifie s’il est possible d’enregistrer les fichiers à un endroit inaccessible par http. En cas de problème, un message est affiché, et dans ce cas l’envoi des fichiers ne pourra avoir lieu tant que le problème ne sera pas résolu. Voir plus bas, le paragraphe sur « Où les fichiers sont-ils stockés ? ».
  • Il est conseillé de choisir l’enregistrement des réponses, et de ne pas se contenter de l’envoi par courriel. En effet, les fichiers ne sont pas joints dans le courriel, pour éviter des problèmes en cas de fichiers lourds, mais un lien y est inséré. Or, ce lien expire 24h après l’envoi du formulaire. Si vous choisissez cependant de ne pas enregistrer les réponses, il est possible d’augmenter ce délai en mettant la ligne suivant dans votre fichier mes_options.php :
    1. define ('_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL', <une_durée_exprimée_en_seconde>);

    Si la durée est mise sur 0, le lien est valable ad vitam aeternam.

Utiliser le formulaire en tant que visiteur⋅euse

Une fois le formulaire publié sur le site public, le·la visiteur⋅euse peut le remplir et choisir les fichiers à envoyer.

Si ielle envoie une réponse avec des erreurs dans un champ, les fichiers déjà envoyés sont conservés, et il n’a pas besoin de les renvoyer. Ielle peut cependant décider, le cas échéant, de supprimer des fichiers déjà envoyés.

Lorsqu’un formulaire contient une erreur, les fichiers envoyés sont conservés

Si vous autorisez un·e visiteur·euse à modifier une réponse envoyée, le formulaire de modification de réponse lui propose automatiquement les fichiers qu’ielle a auparavant envoyés, avec la possibilité de supprimer – et donc de remplacer – des fichiers.
Notez que, comme pour les autres champs, il n’est fait aucune sauvegarde des anciennes valeurs.

Exemple de présentation d’un formulaire pour modifier une réponse déjà existante
Exemple de remplacement d’un fichier envoyé auparavant

Récupérer les fichiers envoyés

Les fichiers envoyés sont stockés dans un endroit normalement inaccessible au public. Dans la présentation des réponses, que ce soit dans l’espace privé de SPIP ou par courriel, un lien est inséré.
Ce lien est sécurisé de telle sorte que seules les personnes ayant le droit de voir les réponses ou ayant reçue le courriel puissent télécharger le fichier.

Présentation des fichiers envoyés dans la réponse d’un formulaire

Notez que quelques changements sont effectués dans le nom des fichiers envoyés :

  • passage en minuscule ;
  • suppression des accents ;
  • remplacement des espaces par des tirets-bas ;
  • suppression des points initiaux si le nom du fichier commence par un point ;
  • ajout éventuel de suffixe pour distinguer les fichiers homonymes ;
  • mise en zip du fichier s’il n’est pas d’un type ou d’une extension listée dans la table spip_types_documents

Dans l’accusé de réception, ces liens sont également insérés.
Cependant, il est possible désactiver cela en mettant la ligne suivante dans le fichier mes_options.php :

  1. define('_FORMIDABLE_LIENS_FICHIERS_ACCUSE_RECEPTION', false);

Joindre directement les fichiers dans le courriel

Depuis la version 3.5.0, il est possible de joindre les fichiers directement dans le courriel.
Mais :
-  le lien entre les fichiers et les champ associé est perdu
-  les fichiers sont à la fin du courriel
-  si la taille (en Mio) dépasse la valeur de la constante _FORMIDABLE_TAILLE_MAX_FICHIERS_EMAIL (par défaut 10), les fichiers ne sont pas joints et on repasse à une présentation classique par insertion d’un lien.

Où les fichiers sont-ils stockés ?

Cette partie de la documentation intéresse surtout les webmestres et non les administrateur·trice·s.

Dans tous les cas, les fichiers sont enregistrés dans le dossier config/fichiers/formidable, qui est automatiquement créé. Il vous faut donc transférer le dossier config/fichiers [5] lorsque vous migrez un site d’un serveur à un autre, et si possible sauvegarder régulièrement ce dossier.

Normalement SPIP s’assure que le dossier config n’est pas accessible en lecture à l’extérieur.
Par précaution, Formidable s’assure également de cela à chaque envoi du fichier.
Si ce critère n’est pas rempli, ou s’il est impossible d’écrire dans config/fichiers/formidable :

  • un message de log est enregistré dans formidable.log ;
  • le fichier n’est pas déplacé dans config/fichiers ;
  • un courriel est envoyé à l’adresse du webmestre configuré dans les réglages d’identité du site [6], ce qui lui permet de récupérer en urgence le fichier dans le dossier tmp/cvtupload ;

À l’intérieur de config/fichiers/formidable, les fichiers sont stockés selon la structure suivante :

  • Si les réponses sont enregistrées en base de données, un dossier par formulaire, puis un dossier par réponse, puis un dossier par champ. Par exemple formulaire_1/reponse_2/fichiers_3.
  • Si les réponses ne sont pas enregistrées, mais simplement envoyées par courriel, nous utilisons un dossier timestamp : à l’intérieur de ce dossier est créé un dossier par réponse, dont le nom correspond au timestamp de la réponse. Au sein de chaque dossier de réponse, un dossier est créé par champs.

Ces fichiers sont effacés :

  • Lorsque la réponse est effacée de la base de données, quand Formidable efface les réponses « à la poubelle ».
  • Lorsque le formulaire est effacé de la base de données quand Formidable efface les formulaires en statut « à la poubelle ».
  • Pour les réponses qui ne sont pas stockées en base de données, lorsque les fichiers sont plus vieux que la constante _FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL, qui par défaut est égale à la constante _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL, qui est égale par défaut à 24*3600 secondes. Vous pouvez modifier cette constante en ajoutant dans votre fichier mes_options.php la ligne suivante :
    1. define ('_FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL', <une_durée_exprimée_en_seconde>);

    Si la durée est mise à 0, les fichiers sont conservés ad vitam aeternam.
    Dans tous les cas, veillez à ce que la constante _FORMIDABLE_EFFACEMENT_FICHIERS_EMAIL soit au moins égale à _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL.

Notes

[1En général, dans ce cas, chaque champ correspond à un besoin différent.

[2Voir l’article de la documentation de SPIP « Ajouter un type de document ».

[3Nos tests en local nous ont montré qu’un fichier LaTeX, d’extension .tex, était détecté de type Mime application/octet-stream, ce qui n’est pas très utile comme information.

[4Un kibioctet (kio) contient 1024 octets, un kilooctet (ko) contient 1000 octets… il est vrai que SPIP considère qu’un kilooctets correspond à 1024 octets. Voir l’article Wikipédia à ce sujet.

[5Pour le moment, seul le plugin Formidable écrit dans config/fichiers, mais d’autres plugins pourraient le faire dans le futur.

Dernière modification de cette page le 1er juillet 2017

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 19 avril à 21:58, par Christophe En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Bonjour,

    J’ai un besoin auquel je ne trouve pas réponse dans la documentation de votre plugin ainsi que les différentes réponses ci-dessous.
    Je préfère préciser que je ne suis qu’un webmestre moyen et pas habile en php :)

    Je souhaiterai faire un formulaire d’avis et de commentaires avec Formidable, qui demanderait notamment une pièce jointe (image avatar de la personne qui répond au formulaire), afin de l’afficher ensuite sur le site. Les personnes qui répondent ne seront à aucun moment enregistrées sur le site en tant que visiteurs.

    Cette image sera affichée en faisant un traitement dans mon squelette sur les réponses du formulaire (par exemple avec FORMULAIRES_REPONSES_CHAMPS ?). Mais en lisant bien la doc, je comprends que l’image est stockée dans un répertoire inaccessible en lecture publique, qu’on ne peut pas récupérer par un chemin normal.

    Du coup je suis tombé sur cette réponse de Maïeul du 16 mars :

    3. Mais si je comprend bien ton problème tu ne veux pas récuperer une url, mais UN CHEMIN de fichier depuis le serveur. De ce point de vue là c’est la fonction formidable_generer_chemin_fichier() qui te permet de récupérer cela. C’est une fonction qui prend en paramètre unique un tableau :
    * formulaire => identifiant numérique du formulaire,
    * timestamp => timestamp de la réponse (si la réponse est uniquement envoyée par courriel)
    * reponse => identifiant numérique de la réponse
    * saisie => nom du champ formidable (type fichier_1)
    * fichier => nom du fichier

    J’avoue que je ne comprends pas trop comment procéder : je connais l’identifiant de mon formulaire, je peux connaître via une boucle le nom du fichier et le label de la saisie, mais où avoir l’identifiant numérique de la réponse ? (existe-il un id pour les réponses d’un formulaire formidable ?)

    Merci de m’éclairer sur ce point :)

    • Le 19 avril à 22:25, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      La boucle FORMULAIRES_REPONSES et la boucle FORMULAIRES_REPONSES_CHAMPS on un champ #ID_FORMULAIRES_REPONSE.

      Je t’invite à utiliser un outil comme phpmyadmin pour comprendre comment sont structurer les formulaires/réponses de formidable, un peu particulier.

      Cela étant, pour un tel besoin, il faudrait peut être mieux utiliser la possibilité d’ajouter des PJ aux « forums » de SPIP.

    • Le 19 avril à 23:25, par Christophe En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Merci Maïeul pour ce retour très rapide !

      Alors j’ai exploré un début de solution grâce au wiki trouvé ici (https://contrib.spip.net/Balises-et-boucles-avec-Formidable) et cela donne :

      1. <BOUCLE_formidable_id_form(FORMULAIRES){id_formulaire=1}>
      2.         <BOUCLE_spip_formulaires_rep(FORMULAIRES_REPONSES){id_formulaire}>
      3.                         <BOUCLE_spip_reponses(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse=#ID_FORMULAIRES_REPONSE}{nom=fichiers_1}>
      4.                                
      5.                                 <img src="#URL_SITE_SPIP/[config/fichiers/formidable/formulaire_#ID_FORMULAIRE/reponse_#ID_FORMULAIRES_REPONSE/#NOM/(#VALEUR|unserialize|table_valeur{0/nom})]">
      6.                                    
      7.                         </BOUCLE_spip_reponses>
      8.         </BOUCLE_spip_formulaires_rep>
      9. </BOUCLE_formidable_id_form>

      Télécharger

      J’arrive bien à générer l’adresse url de l’image mais je ne peux bien sûr pas y accéder à cause des permissions sur config (et je ne vais pas supprimer les htaccess^^)

      Je vais détailler un peu plus mon besoin parce que je ne pense pas que les PJ aux forums de spip puissent m’aider (mais je ne connais pas bien).

      J’ai créé un formulaire formidable qui récupère différents champs renseignés pour générer des avis d’internautes avec gestion de microdata de type review. Je récupère donc le nom, prénom, titre du commentaire, texte du commentaire, notation de 1 à 5, un champ multiple avec le service à noter, un champ multiple pour préciser la langue, et le champ pour joindre un fichier joint pour faire l’avatar. J’utilise ensuite la plupart de ces valeurs dans différentes boucles pour l’interactivité de mon site (associer des avis à un produit par exemple, à des articles...)

      Existe-t-il un moyen de contourner le fonctionnement de Formidable pour le stockage des fichiers, et les stocker par exemple dans IMG ? J’ai parcouru formidable_fichier.php mais je n’ose pas modifier le code car je risque de tout casser.

      Merci pour votre aide !

    • Le 20 avril à 00:03, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      1. Il y a la fonction / filtre formidable_generer_chemin_fichier() qui te permet de générer l’adresse plus proprement qu’en mettant /[config/fichiers/formidable/formulaire_#ID_FORMULAIRE/reponse_#ID_FORMULAIRES_REPONSE/#NOM/(#VALEUR|unserialize|table_valeur{0/nom})]
      2. Mais cela ne réglera pas ton problème d’accès : c’est fait exprès que ces fichiers ne soit pas accessibles. Tu peux bien sûr surcharger formidable_fichier, mais dans ce cas tu perdra la gestion des fichiers sécuriéses pour les autres formulaires formidables.

      Du coup tu as deux solutions :
      -  A mon avis le plus propre serait que tu crée ton propre formulaire CVT (donc sans utiliser formidable, en codant « à la main » le formulaire) en t’appuyant sur cvt-upload pour la gestion de l’envoi de fichier.
      -  Si tu conserve formidable, tu te crée une fonction qui te copie le fichier à un endroit accessible, en s’assurant de ne pas copier le fichier à chaque fois que tu requete la page (car sinin tu passe ton temps à copier le fichier). Pour cela tu peux t’appuer sur la fonction https://code.spip.net/autodoc/tree/ecrire/inc/documents.php.html#function_deplacer_fichier_upload() https://code.spip.net/autodoc/tree/ecrire/inc/documents.php.html#function_deplacer_fichier_upload

      Dans tous les cas il te faudra mettre la main dans un peu de code.

    • Le 20 avril à 10:01, par Christophe En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Bonjour Maïeul, et merci pour ton aide !

      J’imaginais quelque chose de semblable avec une solution recopiant les fichiers sans savoir trop où commencer, je vais donc explorer la piste que tu me donnes et mettre la main dans le cambouis php :)

      Je reviendrai poster mon code ici quand il sera prêt et testé.

      Merci encore !

    Répondre à ce message

  • Le 16 mars à 22:54, par guillaumedv En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Bonjour,

    Tout d’abord, merci pour cette fabuleuse évolution d’un Formidable plugin !

    J’aurais besoin de récuper l’url non sérialisée d’un fichier image téléversé via formidable pour des traitements ultérieurs comme l’inclusion dans un pdf généré depuis un autre formulaire CVT via tcpdf.

    Par exemple : un formulaire d’inscription généré par formidable réclame un justificatif.
    Dans un second temps, on interroge la db via la boucle formulaire_réponses pour alimenter la génération d’un pdf comprenant les données saisies ainsi que le justificatif concaténés.
    Le problème est que je n’arrive pas à obtenir une url utilisable depuis un formulaire SPiP.

    Auriez-vous une piste ?

    bonne soirée

    • Le 16 mars à 23:46, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Je ne suis pas certain de comprendres tous les besoins, d’autant qu’il est tard
      1. Concrètement, les fichiers sont stockés dans config/fichiers. Ces fichiers sont inaccessibles par url direct, pour des raisons de sécurité.
      2. Ils sont accessibles via une url d’action sécurisée, qui s’assure que la personne qui se connecte a bien le droit de lire ces fichiers. Sur le principe des action sécurisée, voire https://programmer.spip.net/Fonctionnement-des-actions. Concrètement l’url de l’action sécurisée est générée via formidable_generer_url_action_recuperer_fichier() et l’execution de cette action est dans action_formidable_recuperer_fichier()
      3. Mais si je comprend bien ton problème tu ne veux pas récuperer une url, mais UN CHEMIN de fichier depuis le serveur. De ce point de vue là c’est la fonction formidable_generer_chemin_fichier() qui te permet de récupérer cela. C’est une fonction qui prend en paramètre unique un tableau :

      * formulaire => identifiant numérique du formulaire,  
      * timestamp => timestamp de la réponse (si la réponse est uniquement envoyée par courriel)
      * reponse => identifiant numérique de la réponse
      * saisie => nom du champ formidable (type fichier_1)
      * fichier => nom du fichier

      dans inc/formidable_fichiers.php

    • Le 13 avril à 11:59, par guillaumedv En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Bonjour Maïeul,

      Merci beaucoup pour cet éclairage qui m’a permis d’arriver à mes fins : c’était bien le 3e point, récupérer le chemin depuis le serveur.
      Ah si j’avais pris la peine de lire un peu plus avant ce code, bien documenté qui plus est ... (air connu)

      Je te prie de bien vouloir excuser mon temps de réaction, je n’ai pu tester cela qu’aujourd’hui, tu as mis moins d’une heure à répondre, et moi, moins d’un mois ...

      Merci encore !

      Guillaume

    • Le 17 avril à 10:50, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      L’essentiel est que ton besoin soi résolu.

    Répondre à ce message

  • Le 15 mars à 15:57, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Hello,

    Sur un site en 3.2 je reçois des message d’erreur lorsqu’un internaute étourdi joint le même fichier (même nom de fichier) 2 fois au formulaire.
    « 
    [ERREUR] Impossible de sauvegarder les fichiers de la réponse 830 au formulaire 2
    Récupérez le plus rapidement possible les fichiers temporaires suivants
    Pour le champ f :
    -  Le fichier temporaire : /home/public_html/site.org/tmp/cvtupload/formidable_pomMNj
    -  Ayant pour véritable nom : 20180220183459145.pdf
     »
    Je vais voir les réponses dans l’admin de SPIP et lorsque je clique sur le document cassé Firefox crash complètement..

    Je vais (presque) immédiatement visiter le répertoire /tmp/cvtupload/ mais il est toujours vide.

    Répondre à ce message

  • Le 9 février à 09:22, par Julien En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Merci pour ce beau plugin :)

    J’ai essayé de le faire marcher avec le plugin champ extra (càd configurer un champ extra avec la saisie ’Fichiers’) mais ça ne fonctionne pas, le fichier n’est pas enregistré. Le champ SQL correspondant n’avait pas été créé en base, je l’ai créé à la main, mais aucune donnée n’est enregistrée dans le champ en question.

    Est-ce que j’ai râté quelque chose ?

    • Le 9 février à 11:11, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Oui. Conceptuellement on distingue quatres choses
      -  cvt-upload qui permet de gérer des envois de fichiers dans un formulaire en faisant que si le formulaire est refusé une première fois pour x raison (champ mal rempli par ex) on ait pas besoin de renvoyer les fichiers
      -  la saisie cvt-upload, livrée en standard avec cvt-upload, qui gère l’affichage html (et qui pourrait être surchargée pour avoir quelque chose de plus moderne, par ex)
      -  la fonction de verification de la saisie (du plugins vérifier) qui s’assure que les règlages de type taille minimal, taille maximale etc sont respectés
      -  le devenir du fichier une fois envoyé, qui doit être réglé au cas par cas. Pour formidable, j’ai choisi une méthode à savoir stocker dans config/formulaires, mais cela n’est pas implémenté pour d’autres besoins, et pas pour champ extra.

      Donc il faudrait étendre champ extra pour avoir cette fonctionnalité, à mon avis sous la forme d’un plugin extension (à develloper de préférence sur la zone plutôt que sur github, plus communautaire). Mais auparavent il faudrait en discuter sur la zone pour voir ce qui serait optimal en terme de comportement.

    • Le 9 février à 19:17, par Julien En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Merci pour ton retour.

      Du coup, j’ai fait un plugin qui correspond à mon use-case, donner la possibilité d’uploader plusieurs logos par article : https://github.com/cahri/spip-logos.... C’est très expérimental.

    • Le 9 février à 19:22, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Hehe.

      Les logos c’est un vieux serpent de mer chez SPIP. Cela fait une éternité qu’on parle de transformer cela en simple documents, avec juste des atttrbuts pour dire que c’est du logo.

      Hésite pas à proposer une doc.

    • Le 9 février à 19:28, par Julien En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Je ferai la doc dans le week-end si tout va bien :)

    Répondre à ce message

  • Le 22 juin 2017 à 11:26, par jp En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Bonjour Maïeul,

    Super heureuse que cette fonctionnalité soit enfin disponible. Je ne vais plus être obligée de choisir entre les super fonctionnalités de formidable et l’envoi de fichier proposé par le formulaire de contact avancé.
    Merci beaucoup pour votre travail et sa redistribution à tous.

    Toutefois pour pouvoir l’utiliser dans mon projet actuel, j’ai vraiment besoin que les pièces jointes soit incorporées dans le mail, est-ce qu vous travaillez sur cette possibilité ou, si ce n’est pas très compliqué, auriez-vous des pistes à me donner ?

    Merci pour tout.

    Julie

    • Le 22 juin 2017 à 12:30, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      En fait le principal problème, si on ouvre cette possibilité, est que les PJ peuvent saturés le mail, et faire que celui n’arrive finalement jamais à destination.

      Du coup d’un point de vue ergonomique il faut réflechir à une options pour avoir un seul maximum.

    • Le 22 juin 2017 à 14:39, par jp En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Waouw, quelle célérité !
      Merci Maïeul.

      Bon, je ne suis pas sûre d’avoir bien compris à quoi il faut réfléchir 😅, mais voici mes éléments de réflexion.

      Dans mon monde idéal, j’imagine une checkbox : « joindre également les documents en pièce jointe ». Cette option pourrait être proposée dans une section « Transfert des fichiers » dans l’onglet validation du paramètres du champs Fichier.

      En complément, si il est possible de tester le poids total des fichiers avent leur envoi, un autre paramètre pourrait être ajouté sous la forme d’un input : poids total autorisé pour les pj (avec valeur par défaut 10mo, qui semble être aujourd’hui une norme assez commune).

      Par contre, si cela n’est pas possible, le poids total des fichiers devrait être anticipé par l’administrateur. Charge à lui de restreindre le nombre et le poids autorisés pour les fichiers si il veut être sûr de recevoir les messages envoyés avec des pj.

      Tout ça est bien sûr de la théorie et je suis malheureusement bien incapable de savoir comment concrétiser ces idées ....

    • Le 23 juin 2017 à 09:59, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      En fait le principal problème est que le formulaire de config est déjà bien chargé.

      Bon, reste . à trouver du tps pour implémenter tt cela.

    • Le 23 juin 2017 à 10:13, par jp En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Une fois de plus merci pour votre réactivité.

      Comme je ne connais pas encore de formule magique pour allonger le temps ou devenir développeur, je peux seulement proposer mon aide comme testeur.

      N’hésitez pas !

      Julie

    • Le 1er juillet 2017 à 14:08, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Pour la taille limite, je vais la fixer finalement via une constante (surchargeable) car c’est un réglage global pour le site.

    • Le 1er juillet 2017 à 18:12, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      La version 3.5 permet de joindre directement les fichiers dans l’email, mais ce n’est pas optimale je trouve, on perd les info de champs (ce serait trop complexe pour moi de faire les deux)

    • Le 4 juillet 2017 à 14:27, par jp En réponse à : Envoyer des fichiers avec un formulaire Formidable

      MERCI !!!!
      🙇😇👍😄

    • Le 4 juillet 2017 à 15:43, par jp En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Je t’avais promis de tester, c’est chose faite et je te fais donc un petit retour :

      -  la variable _FORMIDABLE_TAILLE_MAX_FICHIERS_EMAIL apparait dans l’interface de gestion des traitements alors que j’ai bien défini une valeur dans l’onglet Validation de la configuration du champs.
      -  dans le message reçu par email, une image contact-16.png apparait en pièce jointe.
      Je te joins des captures d’écran.

      Pour le reste tout est impéc. Encore Merci.

      Julie

    • Le 4 juillet 2017 à 21:03, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Non, _FORMIDABLE_TAILLE_MAX_FICHIERS_EMAIL est une constante définie en PHP qui n’a rien à voir avec la taille maximum des pièces jointes que le formulaire accepte. C’est la taille maximum des pièces jointes qui seront éventuellements envoyées par mail. Si cela dépasse _FORMIDABLE_TAILLE_MAX_FICHIERS_EMAIL alors on retourne à l’ancien système. Ce qui est dérangeant c’est que je ne peux pas (pour le moment) faire que _FORMIDABLE_TAILLE_MAX_FICHIERS_EMAIL soit automatiquement remplacée par sa valeur effective.

      Pour le contact 16 je suis étonné. Il faudrait m’envoyer le .yaml du formulaire pour que je puisse tester.

    Répondre à ce message

  • Le 7 avril 2017 à 14:32, par Pierrot En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Bonjour,

    Un bug potentiel sur un formulaire en ligne sur l’upload des fichiers, je peux donner l’adresse en MP.

    Sur ce formulaire les internautes peuvent joindre jusqu’à 5 fichiers avec un poids max de 1mo et une taille max de 1920x1080.

    Si l’internaute choisi 5 fichiers valides, aucun souci, ça marche.

    Si un ou plusieurs fichiers sont invalides, on a bien une erreur et on peut sans problème re-choisir des fichiers (par ex les 2 fichiers invalides sont supprimés et on peut en choisir 2 à la place).

    Ensuite on envoie le formulaire tout part bien sauf que, seuls sont uploadés les fichiers qui étaient valides à la première soumission. Les autres ne sont pas uploadés, n’apparaissent pas dans le mail, et ne sont pas dans le dossier config/fichiers/etc...

    C’est un bug ou c’est moi qui fait un truc de travers ? j’ai fait 3 essais et le pbm a été remonté par un internaute qui est sûr d’avoir choisi 5 fichiers ...

    Pierre.

    Répondre à ce message

  • Le 8 mars 2017 à 15:48, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Je ne sais pas si c’est lié à la mise à jour de SPIP vers 3.1.4 mais depuis hier les fichiers joints ne sont plus stockés dans config/fichiers/formidable/formulaire_2/
    Ils sont bien dans tmp/cvtupload/formidable_xxx
    Je suis webmestre (auteur 1) mais je n’ai pas reçu de mail

    Mon dossier config à les droits 770. Est-ce correct ?

    Merci

    • Le 8 mars 2017 à 16:16, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Normalment ont est plutot en 755, mais a priori cela ne devrait pas changer grand chose, d’autant qu’un test en local m’a montré que 750 fonctionne, donc a priori 770 devrait fonctionner aussi.

      J’ai également testé la dernière version de SPIP. Aucun souci.

      Il y a deux problèmes :
      -  ce n’est pas déplacé. Pourquoi ? mystère. Il faudrait voir ce que donne les logs, pour que je sache à quel endroit se situe le problème.
      -  tu ne reçois pas le mail d’urgence… je crois (mais je suis pas sûr) que j’ai documenté cette fonctionnalité sans la coder :(. je vérifie et corrige si besoin.

    • Le 8 mars 2017 à 16:25, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Ah non, j’avais bien codé cette fonctionnalité.

      C’est étrange. D’abord comment est tu au courant qu’une personne a essayé un envoi de fichier qui a échoué ?

    • Le 8 mars 2017 à 17:46, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Parce qu’en allant voir les réponses sur la page ?exec=formulaires_reponse&id_formulaires_reponse=105 les liens vers les fichiers sont absents
      (je ne suis pas destinataire des réponses)
      J’ai ajouté mon email sur la page exec=configurer_identite. Peut-être que cela résout le problème de l’envoi du mail.

      [résolu]Je viens de faire un test comme destinataire : tout fonctionne... Donc c’était un problème passager

    • Le 8 mars 2017 à 17:56, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Ah oui, l’email utilisé est celui configuré dans les réglages du site. Il me semblait qu’il était configuré par défaut lors de la création du site (après vérification, c’est le cas).

      est-ce que par hasard on pourrait avoir le message de log pour savoir où a eu lieu le problème.

    • Le 8 mars 2017 à 18:17, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Voici le log de l’envoi (j’ai remplacé les valeurs saisies par xx)

      2017-03-08 15:14:49 176.147.80.165 (pid 1454) :Pub:!INFO: {"post":
      {"id_formulaire":2,"formulaire_action":"formidable","formulaire_action_args":"
      +QLirDxu5waYZwh2pfXlRRxnyBygdnG\/LBeeAtcN1Q1N7BnTW
      \/ixRL5jSZE6SavCK1jK+unOO","formidable_afficher_apres":"rien","select_3":"select_3_5",

      "radio_1":"choix2","ligne_1":"xx","ligne_2":"xx","texte_1":"xx","ligne_3":"xx","ligne_4":"xx\u00e9","ligne_5":"France","email_1":"xx","ligne_6":"xx","ligne_8":"xx","date_1":"13\/06\/1995","select_2":"select_2_1","num_1":"","ligne_9":"xx","ligne_10":"xx","ligne_11":"xx",
      "ligne_12":"","ligne_15":"xx","ligne_16":"","cvtupload_fichiers_precedents":{"fichiers_1":["weOpKUuvHw6QPlI09N2J9p4rokjcXxoNdIa\/F9cW9HOZUdoEAEYcYKkecqyRu1xKx8i+yW8stz7Ye52bSeFuGDBbaZotoOwX\/g5Ko2BWrv8Q7TEymAvpPi3B8L1rH3h1+XdTlVlJQL0RNJ\/sha9dKHH7RTPOxkf1piDn1cuisKczH\/oEfWLsgieDkS7\/EVXTjByJQ\/p+glTwUd4Vjm40PprxNOQIQFrwbPKAvrXcnPNUnRfSscg4r3vGbKSrfW\/hgeHSZJi51pUCXQ6+xfz3VMkauEmy+cV+0Wpf8+WPN54+BSNza3BofT0SUpYARKcqxXbxfisQkmdxWchGAoBPPP5GzYIydEo4X9dCZbCHludgcZWYpA=="],
      "fichiers_2":["weO9KUu\/A8+QXlRUzzuJMvwppe\/J91UPPMxPmTslZykcQ\/\/83d5nOBMM6L0Tn6IzCizCztfawH1
      \/4c+RnHaos80T9MQU5GcqIeyU9hnXc6XozoaHJquI1E2yQJ2OGeFhyIrDw
      AUeLy2858K9St3khHbguqIuCA7N26LyInCbncnckj++EU6X7Zu0t7BCoLva7PUSeULEbBu6Xmh4DbZBv2Gs0MTPiUCSgzeQM41gfwGqphp7sOJWGu57e7o3ZRJIQCWt4o5v
      WGuMxsOWR6CVSahpbrG8IXzTb\/rzp0katkN3
      \/7kU3840utwM7IT6gx0kmFJt3wqJLX7MT+TWvHHTmvU+UH15gdz9xjMybSqkREBe
      YpCfvukYBfc="]},"mechantrobot":""},"files":{"fichiers_1":{"name":[""],"type":[""],"tmp_name":[""],"error":[4],"size":[0]},"fichiers_2":{"name":[""],"type":[""],"tmp_name":[""],"error":[4],"size":[0]}}}  

      Les 2 docs récupérés dans /tmp semblent être des Word xml dont 1 qui est corrompu

    • Le 8 mars 2017 à 19:09, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Ca c’est formidable_post.log, je voulais formidable.log en fait…

    • Le 8 mars 2017 à 19:30, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Cherché partout : pas de formidable.log dans le site
      Seulement formidable_post.log et formidable_post.log.1

    • Le 9 mars 2017 à 10:24, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      ah ! Cela veut dire que soit j’ai mis un niveau de log trop fort, soit j’ai oublié d’enregistrer quelque part les informations.

      Merci. N’hésite pas à me redire si le problème se reproduit…

    • Le 8 avril 2017 à 22:17, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

      Bonsoir,
      Cela c’est reproduit plusieurs fois. j’ai l’impression que cela concerne les fichiers doc et/ou docx / dot

      Donc j’ai désactivé ces formats et depuis pas de déchet.

    • Le 8 avril 2017 à 22:41, par Maïeul En réponse à : Envoyer des fichiers avec un formulaire Formidable

      étrange… j’avoue ne pas voir ce qui pourrait être là cause du souci.

    Répondre à ce message

  • Le 21 janvier 2017 à 06:55, par spipheure En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Merci et Bonne année

    c’était une vrai attente

    Répondre à ce message

  • Le 9 janvier 2017 à 16:28, par ploufplouf En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Bonjour,

    J’attendais cette fonctionnalité avec impatience, merci pour votre travail.

    Je suis en Spip 3.1.1
    formidable 3.0.3
    verif 1.4.3
    saisies 2.17.1
    CVTupload 1.95

    J’ai bien tout installer mais quand j(ajoute le champs « un ou plusieurs fichiers » dans mon formulaire je n’ai pas les réglages de propriétés des fichiers dans l’onglet validation...
    J’ai désinstaller et réinstaller rien ne change avez-vous une idée SVP ?
    Merci par avance ;)

    Répondre à ce message

  • Le 3 janvier 2017 à 23:27, par DD En réponse à : Envoyer des fichiers avec un formulaire Formidable

    Tout d’abord grand merci pour cette fonction qui permet d’éjecter forms&tables après de nombreuses années de bons services.

    Un retour sur le contenu du mail de notification envoyé :
    Il n’y a pas de lien pour voir les docs joints (les autres liens dans l’émail sont OK). Donc il faut se connecter au site pour voir les docs (et donc les liens et les droits d’accès sont bons). (ci-joint capture)

    Voici le code source extrait du mail :

    **Lettre de motivation**: [Lien expirant dans 4j 1h 26min 40s] crapdetectionresources.odt (ODT - 34.6=C2=A0ko) (http://www.site.org/spip.php?action=3Dformidable_recuperer_fichier_par_=
    email&arg=3Da:4:{s:10:"formulaire";s:1:"2";s:7:"reponse";s:1:"4";s:7:=
    "fichier";s:26:"crapdetectionresources.odt";s:6:"saisie";s:10:"fichiers_1=
    ";}&hash=7721ef408dfbe8c24b68)

    ---|- =20

    Merci encore pour ce cadeau en forme d’étrennes !

    Répondre à ce message

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

  • Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    8 janvier 2014 – 23 commentaires

    SPIP 3 fonctionne nativement avec l’encodage universel unicode utf-8. Sur certains sites (par exemple sur une mise à jour), on peut avoir un site qui est resté en iso-latin ce qui n’est pas conseillé (source de bugs, d’incompatibilité, ...) . (...)

  • ScolaSPIP 4

    19 janvier 2016 – 360 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • SPIP 3.2, Agenda et FullCalendar

    6 juin – 10 commentaires

    Nous avions publié un article sur la manière d’utiliser FullCalendar avec SPIP 3.0 afin d’afficher des évènements sous forme d’Agenda. La version de FullCalendar a changé avec SPIP 3.2. Le présent article est donc un tutoriel adapté à SPIP 3.2. Pour (...)

  • Mailsubscribers

    16 janvier 2013 – 408 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de (...)

  • Nouvelle version - Modération de modifications

    29 janvier 2012 – 49 commentaires

    Suite à une migration depuis SPIP-Agora, j’ai développé ce plugin permettant de reprendre la fonctionnalité « Nouvelle version » inexistente sur SPIP2 ni sur SPIP3 Ce plugin permet d’étendre le work-flow de -rédaction-publication d’un article au cas d’un (...)