Récupérer l'adresse d'un fichier

Récupérer l'adresse d'un fichier - PHP - Programmation

Marsh Posté le 31-03-2006 à 09:09:48    

Bonjour,
 
j'ai un petit problème, je voudrais que l'utilisateur selectionne un fichier (sur le réseau) avec un bouton parcourir, et recupérer derrière l'adresse de ce fichier, sans le copier, afin de faire un lien vers celui-ci!
 
Si vous aviez des idées ;)
Merci!

Reply

Marsh Posté le 31-03-2006 à 09:09:48   

Reply

Marsh Posté le 31-03-2006 à 09:15:26    

pas possible ...

Spoiler :

humm suis sur de moi à 95% mais on sait jamais ...


 
Par contre je vois pas trop bien l'interet de pas uploader le fichier sur le serveur [:mlc2]

Reply

Marsh Posté le 31-03-2006 à 09:43:52    

anapajari a écrit :

pas possible ...

Spoiler :

humm suis sur de moi à 95% mais on sait jamais ...


 
Par contre je vois pas trop bien l'interet de pas uploader le fichier sur le serveur [:mlc2]


 
Bah le fichier est sur un serveur de fichier, et le but est de faire un lien avec un devis à chaque fois sur une appli, mais ceux-ci peuvent être placé a plein d'endroit différents sur le serveur (chui en stage et c'est à la sncf cherche pas :D)

Reply

Marsh Posté le 31-03-2006 à 11:50:42    

Si j'ai bien compris ton besoin, alors oui, c'est possible car je l'ai fait et pourquoi pas uploader le ficheir sur le serveur? => pour pas dupliquer l'info.
 
Dans mon cas, je devais mettre en place un chrono documentaire (un tableau qui référence certains fichiers) et pour chaque fichier, avoir un lien qui permettent d'ouvrir le fichier. Or, ces fichiers se trouvaient sur un lecteur réseau windows (et pas question de dupliquer) et le serveur de mon appli php était sous Linux. En +, certains utilisateurs étaient sous linux. Donc, pour lier un fichier sans l'uploader, l'utilisateur utilise le bouton parcourir de la balise <input type="file" /> et sélectionne un fichier. Ensuite, au moment du submit, j'ai une fct javascript qui récupère le contenu du champ "file", le stocke dans un champ caché, vide le champ "file" et envoie le tout au serveur. Côté serveur, je en garde que la partie du chemin du fichier qui m'intéresse. Ensuite, vu que les utilisateurs de windows ont accès au fichier via lecteur réseau monté sur leur poste, je fais un lien hypertexte en "file://" (s'ils utilisent IE), comme ça, le fichier s'ouvre en local. Pour les utilisateurs sous Linux, on a mis en place un montage smb sur le serveur Linux de l'appli qui pointe sur le lecteur réseau windows et sur l'appli, j'ai fait un lien en "http://" qui pointe sur le montage smb, ce qui fait qu'ils téléchargent le fichier en local pour le consulter.
 
ps : sous Win XP SP2, ça amrche un peu moins bien ma fonction JS qui copie le contenu de champ "file". Sûrement pour renforcer la sécurité, mais au bout du compte, ça marche encore :)

Message cité 1 fois
Message édité par rufo le 31-03-2006 à 11:50:53
Reply

Marsh Posté le 03-04-2006 à 07:46:57    

rufo a écrit :

Si j'ai bien compris ton besoin, alors oui, c'est possible car je l'ai fait et pourquoi pas uploader le ficheir sur le serveur? => pour pas dupliquer l'info.
 
Dans mon cas, je devais mettre en place un chrono documentaire (un tableau qui référence certains fichiers) et pour chaque fichier, avoir un lien qui permettent d'ouvrir le fichier. Or, ces fichiers se trouvaient sur un lecteur réseau windows (et pas question de dupliquer) et le serveur de mon appli php était sous Linux. En +, certains utilisateurs étaient sous linux. Donc, pour lier un fichier sans l'uploader, l'utilisateur utilise le bouton parcourir de la balise <input type="file" /> et sélectionne un fichier. Ensuite, au moment du submit, j'ai une fct javascript qui récupère le contenu du champ "file", le stocke dans un champ caché, vide le champ "file" et envoie le tout au serveur. Côté serveur, je en garde que la partie du chemin du fichier qui m'intéresse. Ensuite, vu que les utilisateurs de windows ont accès au fichier via lecteur réseau monté sur leur poste, je fais un lien hypertexte en "file://" (s'ils utilisent IE), comme ça, le fichier s'ouvre en local. Pour les utilisateurs sous Linux, on a mis en place un montage smb sur le serveur Linux de l'appli qui pointe sur le lecteur réseau windows et sur l'appli, j'ai fait un lien en "http://" qui pointe sur le montage smb, ce qui fait qu'ils téléchargent le fichier en local pour le consulter.
 
ps : sous Win XP SP2, ça amrche un peu moins bien ma fonction JS qui copie le contenu de champ "file". Sûrement pour renforcer la sécurité, mais au bout du compte, ça marche encore :)


 
C'est a peu près ca mon histoire :) Tu pourrais me dire comment ta fonction récupére le chemin?

Reply

Marsh Posté le 03-04-2006 à 09:05:50    

ben, je viens de te l'expliquer. L'utilisateur sélectionne un fichier via le bouton parcourir du champ <input type="file" /> ou copie/colle le chemin dans ce champ. Quand il valide, ça appelle une fonction javascript qui récupère le contenu du champ "file" (MonFormulaire.ChampFile.value) et le copie dans un champ caché (MonFormulaire.ChampCache.value = MonFormulaire.ChampFile.value;) et côté serveur(moi, c'est un script php), tu ne t'occupes que du contenu du champ caché...

Reply

Marsh Posté le 03-04-2006 à 09:08:22    

Code :
  1. document.getElementById('leNomDeTonInputFile').value

Reply

Marsh Posté le 03-04-2006 à 09:32:51    

anapajari a écrit :

Code :
  1. document.getElementById('leNomDeTonInputFile').value



T'es sûr qu'on peut modifier l'entrée d'un Input File ?
Non, parce que ce serait une grosse faille de sécu quand même.  [:at war with emo]

Reply

Marsh Posté le 03-04-2006 à 09:40:33    

la modifier pas possible, la récuperer oui! Je viens de tester (FF&IE)!
Et puis c'etait surtout pour donner une methode plus "actuelle" que le:

rufo a écrit :

(MonFormulaire.ChampCache.value = MonFormulaire.ChampFile.value;)


 
edit:
A la modification FF me sort une magnifique:
[quote]Erreur : uncaught exception: [Exception... "Security error"  code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"  location: "http://***/***/***/upload.html Line: 27"]
 
IE dit rien, mais fait rien non plus


Message édité par anapajari le 03-04-2006 à 09:42:56
Reply

Marsh Posté le 03-04-2006 à 14:51:42    

Effectivement, modifier l'entrée d'un input file, c'est pas posssible. Avec ma méthode "à l'ancienne" (MonFormulaire.ChampCache.value = MonFormulaire.ChampFile.value), j'ai pas de message d'erreur, ça marche très bien.
Par contre, depuis que le SP2 sur WinXP a été installé, ça bloque l'envoi du formulaire quand on copie/colle un chemin d'accès dans le input file. Pour contourner, je fais :  
1) copie/colle du chemin dans le input file
2) je valide mais rien ne se passe
3) j'efface le contenu du input file
4) je valide et là, ça marche, le chemin est bien récupéré aussi vu qu'à la première validation, le input hidden a bien pris la valeur du input file ;)


Message édité par rufo le 03-04-2006 à 14:53:20
Reply

Marsh Posté le 03-04-2006 à 14:51:42   

Reply

Marsh Posté le 03-04-2006 à 15:33:17    

comment ca marche ton lien ?
si la personne A utilise un partage reseau à la con le fichier va avoir ce chemin
z:\rep\fichier1.dat
 
Alors que pour B qui n'a rien, ne pourra jamais utiliser ce fichier non ?

Reply

Marsh Posté le 03-04-2006 à 15:37:05    

il faut que sur le serveur web, il y ait un ou plusieurs montages qui donnent accès à /UrlMontageServeur/rep/fichier1.dat

Reply

Marsh Posté le 03-04-2006 à 15:38:46    

Oui mais comme il dit qu'il a des liens de partout, ca doit etre tres propre le chemin de tous les liens s'il veut que ca marche, sans avoir besoin de les rapatriés chez lui les fichiers.

Reply

Marsh Posté le 03-04-2006 à 16:33:07    

oui, il faut que les liens soient propres, mais ça évite d'uploader les fichiers...On peut pas tout avoir...

Reply

Marsh Posté le 03-04-2006 à 19:56:17    

Sinon, tu fait un hidden (si ca ne marche pas avec un input que tu caches) et avec un button qui n'est pas submit tu copis dans l'input invisible et apres ton JS post sur la page.


Message édité par Dinan le 03-04-2006 à 19:57:22
Reply

Marsh Posté le 04-04-2006 à 09:02:29    

ben c'est ce que je fais copier dans un hidden. Ce que IE aime pas c'est que l'utilisateur copie/colle dans un input file des url (il passe donc pas par le bouton parcourir).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed