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
Compatibilité Joomla! 4/5 :

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 raccourci 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 champ 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 !

7 commentaires

  • Précision sur FIELDNAME

    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 !

  • Nom fichier filemask

    J'aurais voulu que le fichier soit renommé plus précisément avec le nom du champ 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.

      • 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 champ téléchargement dans le formulaire, c'est tout.
        Le renommage de fichier avec les filemask marchent bien, mais pas pour avoir ce simple résultat. 😔

Connectez-vous pour poster un commentaire

Afin d'éviter les messages indésirables, les commentaires sont réservés aux membres inscrits. Veuillez vous inscrire ou vous connecter pour publier votre commentaire

FAIRE UN DON

paypal btn

Via PayPal

PLUGIN UP DE LOMART

Universal Plugin : UP

De très nombreuses actions pour vos articles en un unique plugin.
up lomart