Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recuperation de nom de fichier

13 réponses
Avatar
J-F Portala
Bonjour,

j'ai le petit souci suivant:
je voudrais dans un formulaire recupérer l'emplacement d'une image et la
stocker dans une base de données.
Pour cela j'utilise input file, qui me permet de parcourir le disque pour
trouver l'emplacement.

Je ne récupère que le nom du fichier sans le chemin.

Les images sont stockées sur le serveur. Le but est de pouvoir réafficher
l'image par la suite à côté de l'article.

Comment dois m'y prendre?

Merci vos conseils

Jeff

10 réponses

1 2
Avatar
Yamo'
Bonjour,

Le Wed, 15 Oct 2008 09:32:31 +0200, J-F Portala a écrit ce message (
<48f59c8f$0$6880$ ):

Je ne récupère que le nom du fichier sans le chemin.



Pour des raisons de sécurité, je ne crois pas qu'on puisse récupérer le
chemin.


Stéphane
--
JS: par curiosité, quel matériel il faut avoir pour créer son propre FAI ?
J : Pour créer un FAI comme Havas Off Line, une machine à café suffit,
pour l'assistance technique.
-+- in: Guide du Cabaliste Usenet - Bien configurer sa Hot-Line -+-
Avatar
CrazyCat
J-F Portala wrote:
Je ne récupère que le nom du fichier sans le chemin.



C'est tout à fait normal, ce qui compte c'est le fichier envoyé, pas sa
provenance exacte.

Les images sont stockées sur le serveur. Le but est de pouvoir réafficher
l'image par la suite à côté de l'article.



Normalement, tu dois maitriser l'endroit où tu copies l'image (voir les
explications sur http://fr2.php.net/manual/fr/features.file-upload.php)


--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Avatar
SAM
Le 10/15/08 9:32 AM, J-F Portala a écrit :
Bonjour,

j'ai le petit souci suivant:
je voudrais dans un formulaire recupérer l'emplacement d'une image et la
stocker dans une base de données.
Pour cela j'utilise input file, qui me permet de parcourir le disque pour
trouver l'emplacement.



Afficher l'image en simultané par Javascript
ne sera possible qu'en "local",
et encore ...
- sans doute que pour un environnement (Win, Linux, Mac)
- les nouveaux brouteurs doivent être encore plus chatouilleux que leurs
ainés et par soucis de sécurité ne donneront jamais le path

Les images sont stockées sur le serveur. Le but est de pouvoir réafficher
l'image par la suite à côté de l'article.



alors ... interroger la BdD
(il faut d'abord uploader l'image puis aller la rechercher)

Comment dois m'y prendre?



Ajax ?


--
sm
Avatar
Pierre Goiffon
SAM wrote:
je voudrais dans un formulaire recupérer l'emplacement d'une image et
la stocker dans une base de données.
Pour cela j'utilise input file, qui me permet de parcourir le disque
pour trouver l'emplacement.



Afficher l'image en simultané par Javascript
ne sera possible qu'en "local",
et encore ...



Oui et encore ! :)

Je n'ai plus la ref sous la main et pas assez de temps mes excuses, mais
nous utilisons cette technique dans notre application pour prévisualiser
l'image sélectionnée dans le input file. A partir de certaines versions
de navigateur, on ne pouvait plus aller lire le contenu complet du input
file.
Avatar
Pierre Goiffon
J-F Portala wrote:
je voudrais dans un formulaire recupérer l'emplacement d'une image et la
stocker dans une base de données.



Par "stocker dans une bdd", vous voulez dire dans un champ blob ou son
équivalent ? Ne le faites que si vous en avez l'absolue nécessité...
Avatar
J-F Portala
Bonjour et merci de votre aide.

J'ai oublié de vous dire que le tout fonctionnait sur un intranet.
Les images sont stockées sur le serveur.

A partir des postes distants connectés à l'intranet, je souhaiterais
afficher l'image dont l'emplacement est enregistré dans la base de données,
comme lorsque l'on affiche
la photo d'un article lorsque celui ci est sélectionné.
C'est la partie exploitation.

Mais la premiere partie consiste à créer la table des "articles" avec les
caractéristiques de l'article et l'emplacement de sa photo.
J'ai donc créé un formulaire dans lequel j'ai utilisé un champ input
type="file" qui génère un bouton parcourir.
J'ai essayé d'afficher en javascript le contenue de la variable mais je n'ai
que le nom du fichier.

Si le chemin est impossible à récupérer, cela veut dire qu'il faut que je
stocke l'emplacement du dossier contenant les images en "dur" dans mon
application et que je colle au fichier
dans la base de données le chemin.
Je pensais travailler en stockant uniquement les chemins des images, sans
enregistrer les images sous forme de blob.

Je conviens que ma description initiale n'etait pas assez précise. J'en suis
désolé.

Jeff
Avatar
CrazyCat
J-F Portala wrote:
Si le chemin est impossible à récupérer, cela veut dire qu'il faut que je
stocke l'emplacement du dossier contenant les images en "dur" dans mon
application et que je colle au fichier
dans la base de données le chemin.
Je pensais travailler en stockant uniquement les chemins des images, sans
enregistrer les images sous forme de blob.



Mais enfin!
Si tu as un formulaire avec un champ "file", tu fais donc un upload de
l'image.
Copies là dans un répertoire du serveur, ne stockes que son nom dans la
base, et affiche l'image du serveur.

Je trouve ça un peu fou de vouloir stocker l'image en base (à moins
d'avoir de sérieuses raisons de vouloir la protéger) alors qu'il est si
simple de la copier dans un répertoire.

--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Avatar
SAM
Le 10/15/08 6:08 PM, J-F Portala a écrit :
Bonjour et merci de votre aide.

J'ai oublié de vous dire que le tout fonctionnait sur un intranet.
Les images sont stockées sur le serveur.



On lit donc "serveur" (Intra ou Exta = même combat)
et ... adiou le "local"

A partir des postes distants connectés à l'intranet, je souhaiterais
afficher l'image dont l'emplacement est enregistré dans la base de données,



Il n'y a donc pas de problème à ce niveau
(l'image est bien stockée dans un dossier auquel le serveur a accès ?)

Mais la premiere partie consiste à créer la table des "articles" avec les
caractéristiques de l'article et l'emplacement de sa photo.
J'ai donc créé un formulaire dans lequel j'ai utilisé un champ input
type="file" qui génère un bouton parcourir.



Normalement ça "parcourt" le DD du poste qui a affiché le formulaire.

J'ai essayé d'afficher en javascript le contenue de la variable mais je n'ai
que le nom du fichier.



C'est normal, le JS s'interdit toute manipulation relative à la machine
du visiteur et le fichier est *sur* cette machine, donc il ne donnera
pas le chemin de ce fichier.
(tant qu'on n'est pas en local (protocole file:) et qu'on n'utilise pas
un vieux brouteur (IE5 ou 6, Firefox 1.5 ou 2)).

Si le chemin est impossible à récupérer, cela veut dire qu'il faut que je
stocke l'emplacement du dossier contenant les images en "dur" dans mon
application et que je colle au fichier dans la base de données le chemin.



Il faut donc uploader l'image sur le serveur qui va la stocker dans un
de ses dossiers et en même temps stocker en BdD le chemin de cette photo
sur le serveur, et enfin on fait afficher l'image à partir du serveur.

L'ensemble de cette(ces) opération(s) peut se faire en Ajax (JS + PHP)
sans avoir à recharger toute la page ou tout le formulaire.

Je pensais travailler en stockant uniquement les chemins des images, sans
enregistrer les images sous forme de blob.



M'enfin !
- ces blobs c'est rien que des trucs pour bien fatiguer sa BdD, non?
- c'est-y pas plus simple de ranger la photo qque part
et de ne stocker que son adresse ?


Je conviens que ma description initiale n'etait pas assez précise. J'en suis
désolé.



à part le coup du blob, on avait bien saisi.
(vouloir afficher une image du DD du visiteur via JS)


Généralement, lors de la production d'un article sur un réseau, on a à
côté un bouton [Visualiser] pour vérifier si la mise en forme est OK,
on profite de cette 'visualisation' pour faire afficher la photo qui a
été uploadée.


--
sm
Avatar
Patrick Mevzek
Le Thu, 16 Oct 2008 15:06:28 +0200, SAM a écrit:
Je pensais travailler en stockant uniquement les chemins des images, sans
enregistrer les images sous forme de blob.



M'enfin !
- ces blobs c'est rien que des trucs pour bien fatiguer sa BdD, non?
- c'est-y pas plus simple de ranger la photo qque part
et de ne stocker que son adresse ?



Les deux techniques ont chacune des avantages et des inconvénients, il n'y
a pas une seule bonne solution dans 100% des cas, cela dépend des
circonstances.

Rapidement, à l'avantage de tout stocker dans la base de données, on a
notamment :

- simplification des sauvegardes (tout est au même endroit, pas d'oubli
possible)

- atomicité de l'opération gérée par la base de données, et donc garantie
normalement : sinon le couple (sauvegarde en base de données, sauvegarde
dans le système de fichiers) doit être géré à la main pour toutes les
erreurs qui surviennent dans l'une des deux sous-étapes.

- intégrité référentielle garantie (sinon que se passe-t-il quand on
efface une image du disque mais pas l'entrée dans la base ? ou
réciproquement ?)


Mais cette discussion est davantage en charte sur fr.comp.applications.sgbd
et on peut trouver déjà beaucoup d'informations sur le net comparant les
deux.

--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
Avatar
J. Trotoux
Pierre Goiffon a écrit :
SAM wrote:
je voudrais dans un formulaire recupérer l'emplacement d'une image et
la stocker dans une base de données.
Pour cela j'utilise input file, qui me permet de parcourir le disque
pour trouver l'emplacement.



Afficher l'image en simultané par Javascript
ne sera possible qu'en "local",
et encore ...



Oui et encore ! :)

Je n'ai plus la ref sous la main et pas assez de temps mes excuses, mais
nous utilisons cette technique dans notre application pour prévisualiser
l'image sélectionnée dans le input file. A partir de certaines versions
de navigateur, on ne pouvait plus aller lire le contenu complet du input
file.



L'ajax (jquery entre autre) permet de valider un formulaire en arrière
plan, sans recharger la page.
Ainsi, l'image est uploadée en arrière plan, stockée côté serveur, on
récupère son chemin, et on l'affiche en js.
Cela ne pose pas de souci. (voir ajaxform de jquery de mémoire). Testé
sous de nombreux navigateurs.
Julien
1 2