Jump to content
  • 0

Nom Fichiers Conteneurs Stockage Externe


FredoMkb
 Share

Question

Bonjour à tous :)

Alors, voici mon soucis :

1. Contexte : solution Fmp tournant sur serveur Fms18, le tout sous environnement Windows Server 2012 ;

2. Situation : rubriques conteneur avec stockage externe directement sur le serveur dans des répertoires dédiés ;

3. Problème : lorsqu'on intègre plusieurs fois un fichier "aaa.xlsx" (par exemple) dans une même rubrique conteneur, alors que le fichier a toujours le même nom lors de l'intégration (mais un contenu différent évidemment), le nom du fichier reste le même dans la rubrique conteneur de Fmp alors que le fichier change de nom côté serveur, il se voit ajouter en suffixe un nombre itératif de type "aaa_1.xlsx", "aaa_2.xlsx", etc. ;

4. Solution : on souhaite que le fichier soit simplement écrasé côté serveur, à chaque nouvelle intégration, tout en conservant son nom d'origine, sans ajout d'un quelconque suffixe ou autre chose… bref, quelque soit le nombre d'intégrations d'un même fichier dans une même rubrique conteneur, on voudrait que le nom du fichier reste inchangé côté serveur…

Et là… c'est le drame :D … car je ne sais pas comment faire :(

Déjà, j'ignore qui est le responsable de ce changement de nom avec un suffixe itératif : est-ce FileMaker ? … est-ce FileMaker Server ? … est-ce le système Windows ? (petite intuition pour celui-là) … est-ce une autre quelconque entité malfaisante ? :D

Bon, si un âme généreuse ayant une petite piste ou solution à mon problème passe par ici, un petit partage de connaissances serait vraiment la bienvenue… :) … car là je plante péniblement… 😕

Merci…

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Normalement le nom n’est modifié que su l’ancien contenu est encore référencé (dans un autre enregistrement ?)

Toubours est-il qu’il ne faut pas considérer la gestion des conteneurs externes comme une manière de manipuler des fichiers sur le serveur pour pouvoir y accéder par ailleurs. FileMaker Server doit être la porte d’entrée unique vers ces fichiers. 

Link to comment
Share on other sites

  • 0
Il y a 7 heures, fabriceN a dit :

Normalement le nom n’est modifié que su l’ancien contenu est encore référencé (dans un autre enregistrement ?)

Toubours est-il qu’il ne faut pas considérer la gestion des conteneurs externes comme une manière de manipuler des fichiers sur le serveur pour pouvoir y accéder par ailleurs. FileMaker Server doit être la porte d’entrée unique vers ces fichiers. 

Merci Fabrice pour ces éclairages 👍

Les fichiers sont intégrés dans une rubrique conteneur présente sur une table mono-enregistrement (type paramètres), donc le référencement devrait être unique… mais enfin, petit détail technique (qui peut éventuellement avoir un rapport avec cette histoire de référencement), la rubrique conteneur est de type multivaluée, plusieurs fichiers sont intégrés dans le processus, chacun dans une répétition qui lui est exclusivement dédiée…

Pour le moment, sur ce que nous cherchons à développer, nous avons besoin d'accéder à ces fichiers, placés donc côté serveur, via un lien URL, mais pour les besoins de notre utilisation, les fichiers doivent justement conserver toujours le même nom… et c'est là que l'ajout du suffixe itératif nous pose problème…

Bref, je vais tester de placer les fichiers dans des rubriques différentes (non multivaluées), pour voir si le comportement change ou pas…

Si d'autres pistes (ou solutions), toujours preneur… 

Merci :)

Link to comment
Share on other sites

  • 0

Bon bon… après de multiples tests, je n'ai hélas pas réussi à comprendre toute la logique qui régit les rubriques conteneurs, avec stockage externe, pour le nommage des fichiers côté serveur… 😕 

Parfois les fichiers sont renommés avec un suffixe itératif, parfois c'est le nom d'origine qui est utilisé… sans trop savoir ce qui détermine un comportement ou l'autre.

En revanche, cette batterie de tests m'a appris au moins deux choses intéressantes :

1. Le comportement est strictement identique que la rubrique conteneur soit de type standard ou multivaluée (et ce pour toutes les répétitions) ;

2. J'ai constaté qu'il y a très souvent un renommage automatique, avec suffixe itératif, lorsqu'on remplace le contenu d'une rubrique conteneur avec un nouveau fichier, sans vider la rubrique au préalable, ce qui n'arrive jamais (selon mes tests) si la rubrique est bien vidée (avec validation de l'enregistrement) avant de lui intégrer un nouveau fichier.

Moralité : pour une table mono-enregistrement, bien penser à vider les rubriques conteneur avant de leur intégrer des nouveaux fichiers si le but est de conserver le nom d'origine des fichiers côté serveur !

ATTENTION, la remarque de Fabrice reste toutefois à tenir en compte pour les tables multi-enregistrements, le renommage s'effectue quasi-systématiquement  (je reste prudent, mes tests sont loin d'être exhaustifs) lorsqu'on intègre les mêmes fichiers sur différents enregistrements, FileMaker semble avoir besoin de différencier les fichiers pour pouvoir les associer aux enregistrement correspondants (ce qui paraît logique).

Voilà… je ne sais pas s'il y a un quelconque paramètre à régler quelque part (Fmp, Fms, autre ?) pour définir le comportement du stockage externe, mais au moins j'ai maintenant une petite idée de ce qu'il ne faut pas faire et je pense que ce sera suffisant pour l'utilisation qu'on souhaite faire…

Toute autre idée ou piste de réflexion est bien-sûr toujours la bienvenue :)

Merci…

Link to comment
Share on other sites

  • 0

Merci à tous les 2 pour vos apports précieux.

Le 14/08/2022 à 05:15, FredoMkb a dit :

je ne sais pas s'il y a un quelconque paramètre à régler quelque part (Fmp, Fms, autre ?)

A part le choix "sécurisé" ou non, je ne vois rien du côté de FMP (et j'ignore tout du côté de FMS).

Pour ma part, j'ai dans plusieurs solution des traitements à la volée à l'insertion dans les conteneurs :

  • l'utilisateur dépose son fichier dans un conteneur qu'il croit être l'emplacement final, mais est en fait un conteneur global,
  • le script déclenché exporte ce nouveau contenu en le renommant
    • et/ou vérifie si l'emplacement cible est vide
    •  et/ou crée un enregistrement dans la table File
    •  et/ou fait des vérifications sur l'extension etc.,
  • puis importe le fichier ainsi contrôlé et correctement nommé dans l'emplacement cible,
  • vide le conteneur global.

Ca sert aussi très agréablement pour importer des données de façon encadrée : l'utilisateur glisse son Excel (en général) vers un conteneur et hop, on lui transforme ça en jeu d'enregistrements, en ayant fait tous les contrôles nécessaires au passage.

Dans ton cas, tu pourrais avoir un nettoyage à la volée du contenu précédent. C'est peut-être ce que tu as déjà mis en place…

Link to comment
Share on other sites

  • 0

Attention @Jérémie Gimenez

  • contrairement à ce qu'on pourrait croire, un conteneur global, à la différence des autres rubriques globales, est immédiatement uploadé vers le serveur. Il vaut mieux insérer dans une variable.
  • l'export pour le renommage implique un deuxième transfert du fichier dans l'autre sens.
  • puis la réinsertion un troisième transfert. C'est beaucoup.

Remarques :

  • exporter le contenu d'une rubrique (je ne sais pas si c'est la méthode que tu utilises) est beaucoup moins rapide que Write to data file, et implique une barre de progression moche et qui ne progresse pas.
  • il est possible de renommer un fichier par calcul https://www.1-more-thing.com/dotfmp-developer-challenge/
    Base64Decode ( Base64Encode ( $fichier ) ; $nomFichierCible )
  • enfin c'est souvent le bon moment pour limiter la taille des fichiers images avec ObtenirMiniature
Link to comment
Share on other sites

  • 0
Il y a 1 heure, fabriceN a dit :

Il vaut mieux insérer dans une variable

Oui certes, cependant, je vise le cliquer-déposer, et ceci requiert la présence d'un objet conteneur. Si c'était avec un bouton "Insérer fichier" avec dialogue pour parcourir les fichiers, la question de passer par un conteneur intermédiaire ne se poserait pas.

Exemple récent :

image.thumb.png.4fa518bace1bd0366f653bd196b2227f.png

 

Ca marche quand on glisse une pièce jointe depuis un courriel (selon le client mail, certes), ce qui est fort apprécié.

Côté performances, dans les situations où je fais cela, on n'a pas de contrainte. Ou disons plutôt que la contrainte «je veux que toute l'équipe comprenne très facilement et trouve le truc simple et agréable à utiliser» passe avant la contrainte des performances.

Write to data file (FM 18) est trop récent pour à peu près la moitié de mes clients, je ne l'ai donc pas encore adoptée.

 

NB : désolé @FredoMkb, on brode un peu autour du sujet…   🤓

Link to comment
Share on other sites

  • 0

Oui malheureusement on n'a toujours pas d'objet champ sans rubrique associée…

Mais ce que je veux dire c'est que tu peux faire tout ton traitement côté serveur : tu insères, et tu lances un script serveur qui va pouvoir changer le nom, les dimensions… sans avoir besoin de faire appel au système de fichier (tout en variable ou directement dans la rubrique)

Link to comment
Share on other sites

  • 0
Il y a 4 heures, fabriceN a dit :

En effet, tous les traitements (ou presque) que j'évoquais sont faisables en une fois par un script serveur, et ces 2 points-là sont particulièrement intéressants.

Link to comment
Share on other sites

  • 0
Il y a 6 heures, Jérémie Gimenez a dit :

Dans ton cas, tu pourrais avoir un nettoyage à la volée du contenu précédent. C'est peut-être ce que tu as déjà mis en place…

Salut les gars :)

Oui, du coup on a opté pour un nettoyage systématique des conteneurs avant de leur intégrer des nouveaux éléments (fichiers ou images)… 

 

Il y a 5 heures, fabriceN a dit :

il est possible de renommer un fichier par calcul https://www.1-more-thing.com/dotfmp-developer-challenge/
Base64Decode ( Base64Encode ( $fichier ) ; $nomFichierCible )

C'est la technique que nous utilisons également… simple à mettre en place et super efficace ! 👍

 

Il y a 5 heures, fabriceN a dit :

enfin c'est souvent le bon moment pour limiter la taille des fichiers images avec ObtenirMiniature

En effet, nous avons choisi d'utiliser un plugin pour ça, entre autres traitements (beaucoup plus d'options que la fonction native de Fmp) : CNS Image (https://www.cnsplug-ins.com/Plug-ins/CNS_Image/)

 

Il y a 2 heures, Jérémie Gimenez a dit :

NB : désolé @FredoMkb, on brode un peu autour du sujet…   🤓

Au contraire, tout vos apports sont éminemment instructifs, faut pas hésiter, ce sont des sujets assez techniques, pas forcément toujours documentés par Fmp, donc toute info est toujours la bienvenue !

Merci… :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...