Chargement personnalisé de fichiers depuis BreezingForms

Est-il possible depuis un formulaire BreezingForms de dynamiser le nom du dossier de réception et le nom du fichier transmis par un utilisateur ?

Niveau : Facile
Version BF minimale requise : BreezingForms Lite

Situation

Depuis un formulaire BreezingForms, vous souhaitez proposer à vos utilisateurs la possibilité de charger un ou des fichiers de quelque type que ce soit. Vous souhaitez aussi avoir la possibilité de dynamiser le nom de dossier de réception et éventuellement le nom du fichier pour le faire correspondre à un format personnalisé et adapté à l'utilisateur p.ex.

Propriétés du champ de chargement de fichier

Vous avez préparé votre formulaire et y avez intégré un champ de chargement. Voyons comment le paramétrer pour la personnalisation du dossier de réception et du nom de fichier.

Dans l'arborescence des champs de votre formulaire, sélectionnez le champ de chargement de fichier. Dans le panneau des propriétés, cliquez l'onglet Avancé.
Par défaut, BreezingForms à prérempli le champ du répertoire de destination de la manière suivante {ff_uploads}.

Ce code raccourcis est originairement selon le chemin ftp suivant : racineSite/media/breezingforms/uplpads de sorte que chaque image chargée par le champ soit envoyé dans ce répertoire.

Nous pouvons ajouter divers codes de personnalisation et je les énumère ci-après et vous indique leur signification :

Codes pour la création de dossier

  1. {userid} = idUtilisateur
  2. {username} = nomUtilisateur_idUtilisateur
  3. {name} = nom_idUtilisateur
  4. {date} = date (aaaa_mm_jj)
  5. {datetime} = Date_Heure (aaaa_mm_jj_HH_mm_ss)
  6. {field:nomchamp} : Nom du champ nomChamp
  7. {nomchamp:value} : Valeur de saisie du champ nomChamp

Codes pour le nom de fichier :

  1. {filemask:FIELDNAME} = valeur de saisie du champ FIELDNAME
  2. {filemask:_separator} = Trait de soulignement _
  3. {filemask:_username} = NomUtilisateur de l'utilisateur enregistré et connecté
  4. {filemask:_userid} = idUtilisateur enregistré et connecté
  5. {filemask:_name} = Nom de l'utilisateur connecté
  6. {filemask:_datetime} = date (aaaa_mm_jj)
  7. {filemask:_timestamp} = Date_Heure (aaaa_mm_jj_HH_mm_ss)
  8. {filemask:_random} = Série de 10 chiffres au hasard.

Le nom de dossier / sous-dossier et le nom du fichier doivent être séparés par le caractère Pipe ( ).

Combinaison nom de dossier + nom de fichier personnalisé.

Nous pouvons dès lors combiner ces codes afin d'obtenir une personnalisation poussée.

Exemple

{ff_uploads}/{nomdechamp:value}|{filemask:_name}{filemask:_separator}{filemask:_random}

donnera un fichier nommé Nom_1234567890.jpg dans le répertoire nommé selon la valeur du champs nomDeChamp

Si l'utilisateur n'est pas connecté, le nom de l'image ne peut être créé selon le nom de l'utilisateur, BreezingForms la nomme alors délibérément _1234567890.jpg

Exemple 2

Dans un formulaire pour lequel l'utilisateur ne doit pas être enregistré, proposez un champ de type texte, nommé prenom dans lequel vous demandez le prénom de l'utilisateur. Comme code d'enregistrement de fichier, vous pouvez utiliser le code suivant :

{ff_uploads}/{prenom:value}|{filemask:prenom}{filemask:_separator}{filemask:_random}

Pour obtenir le résultat suivant : monSite/media/breezingforms/uploads/Eddy/Eddy_1234567891.jpg

Sans suite après le caractère Pipe (indispensable), le nom de l'image ne serait pas modifié mais le répertoire sera nommé à la valeur du champ prenom et donc selon le prénom de l'utilisateur : monSite/media/breezingforms/uploads/Eddy/monImage.jpg

ATTENTION :
Si les noms de vos champs incluent des lettres capitales, il est important de n'utiliser que des minuscules dans la création de votre masque de création Répertoire/fichier.
Le tutoriel est mis à jour avec cette information suite aux commentaires que vous pourrez lire ci-après. Merci à la personne qui a remarqué la subtilité et nous l'avoir remontée. N'utilisant que des minuscules dans mes noms de champs, je ne m'étais jamais rendu compte de ce détail.

À vous de jouer !

Inspiré de : https://crosstec.org/en/support/online-documentation/breezingforms/10-advanced-settings/206-save-uploaded-files-different-folders.html

Cet article vous a plu ?
N'hésitez pas à laisser une évaluation en haut de page afin de me faire part de votre impression !

Commentaires  
christophe PARIS
+1#Précision sur FIELDNAMEchristophe PARIS10-12-2019 15:14
Bonjour,
Après de nombreuses tentatives infructueuses de nommage de fichier en souhaitant reprendre le contenu d'un champ pour nommer le fichier.

À chaque tentative j'obtiens un nom de fichier qui indique {filemask:mavaleur} en lieu et place de la valeur souhaitée (idem pour le nommage d'un sous-répertoire).

La solution très improbable tient dans le fait que mon champ est nommé MaValeur (avec les majuscules)

{filemask:MaValeur} ne fonctionne pas
{filemask:mavaleur} fonctionne et reprend bien la valeur contenue dans le champ

BreezingForms ne prend pas en compte, dans cette redéfinition du chemin ou du nom de fichier, les majuscules mais accepte le même nom de variable converti en minuscule !
Eddy
0#RE: Précision sur FIELDNAMEEddy10-12-2019 17:21
Bonjour.

Je vais faire des essais selon votre exemple et reviendrai ci-dessous vous indiquer le résultat.
Pour le nom des champs, il est souvent préférable de n'utiliser que des minuscules et un underscore pour une éventuelle séparation des termes, p.ex. "mon_champ"
Eddy
0#RE: Précision sur FIELDNAMEEddy21-12-2019 11:06
Cher Christophe.

Suite à quelques tests, je remarque que vous avez parfaitement raison. N'utilisant jamais de majuscules dans mes noms de champs, je ne m'étais jamais rendu compte de cette subtilité.
Deny
0#nom fichier filemaskDeny22-05-2020 01:48
J'aurais voulu que le fichier soit renommé plus précisément avec le nom du champs genre :
"cv-recto-eddy.jpeg" (cv-recto est le nom du champ de téléchargement et eddy c'est {filemask:_name} )
Je ne vois pas cette possibilité avec les choix restreints des filemask.
Eddy
0#RE: Chargement personnalisé de fichiers depuis BreezingFormsEddy22-05-2020 08:51
Bonjour Denis.

Essayez de retirer les "-" du nom du champ, remplacez par un underscore (trait de soulignement) "_".
Si ça ne fonctionne toujours pas, essayez avec uniquement des lettres minuscules.
Deny
0#Bonsoir EddyDeny23-05-2020 01:28
Bonsoir Eddy, pour préciser : ce n'est pas un pb de tiret c'est juste un renommage de fichier (pas dossier) que je n'arrive pas à faire. Mais ce n'est peut-être pas possible.
C'est pour avoir cet exemple : "carterecto_Bob.jpeg"
"carterecto" est juste le nom du champs téléchargement dans le formulaire, c'est tout.
La renommage de fichier avec les filemask marchent bien mais pas pour avoir ce simple résultat. :sad:
Deny
0#SOLUTION!!!!Deny23-05-2020 01:50
Avant de me coucher la solution de crosstec!!
{ff_uploads}/carteidentiterecto{filemask:_separator}{filemask:nom}
Donc pas de filemask juste le nom!
OUF, je vais bien dormir! :zzz

Les commentaires sont réservés aux membres enregistrés. Si vous êtes membre, veuillez vous connecter sinon, n'hésitez pas à vous enregistrer !