OVH Cloud OVH Cloud

Sélectionner un dossier ?

19 réponses
Avatar
Luca
Bonjour,

Je cherche une solution pour que l'utilisateur d'un service web puisse
transmettre le chemin d'un dossier sur son PC (poste client), sans avoir à
le taper dans un champ de formulaire. L'idéal serait donc d'ouvrir une boîte
de dialogue pour lui permettre de parcourir l'arborescence de ses fichiers
et sélectionner le dossier approprié. En cherchant sur MDSN (l'utilisateur
se servira exclusivement de MSIE, je n'ai donc pas besoin d'un code
fonctionnant dans les autres navigateurs), j'ai trouvé la méthode
BrowseForFolder avec l'exemple suivant :

<script language="JScript">
function fnShellBrowseForFolderJ() {
var objShell = new ActiveXObject("Shell.Application");
var ssfWINDOWS = 36;
var objFolder;
objFolder = objShell.BrowseForFolder(0, "Example", 0, ssfWINDOWS);
if (objFolder != null) {
// Add code here.
}
}
</script>

Malheureusement cela ne fonctionne pas chez moi (Win XP Pro SP2, MSIE 6),
j'ai une erreur "Permission refusée" au niveau de objFolder.

Quelqu'un a une (autre) idée ?

Merci !

Luca.

10 réponses

1 2
Avatar
Olivier Miakinen

Je cherche une solution pour que l'utilisateur d'un service web puisse
transmettre le chemin d'un dossier sur son PC (poste client), sans avoir à
le taper dans un champ de formulaire. L'idéal serait donc d'ouvrir une boîte
de dialogue pour lui permettre de parcourir l'arborescence de ses fichiers
et sélectionner le dossier approprié. En cherchant sur MDSN (l'utilisateur
se servira exclusivement de MSIE, je n'ai donc pas besoin d'un code
fonctionnant dans les autres navigateurs), j'ai trouvé la méthode
BrowseForFolder avec l'exemple suivant :

[...]
var objShell = new ActiveXObject("Shell.Application");
[...]

Malheureusement cela ne fonctionne pas chez moi (Win XP Pro SP2, MSIE 6),
j'ai une erreur "Permission refusée" au niveau de objFolder.

Quelqu'un a une (autre) idée ?


À mon avis (de néophyte qui n'ai jamais utilisé ni JScript ni ActiveX),
si cela ne marche pas chez toi, c'est probablement parce que ce genre de
truc a été désactivé dans ta version récente du dinosaure, à cause du
trou de sécurité que cela représentait.

Si tu voulais transmettre le contenu d'un fichier et non pas son nom (et
encore moins le nom d'un répertoire), une possibilité serait à chercher
dans HTML, tout simplement :
<http://www.w3.org/TR/html4/interact/forms.html#file-select>.
Mais visiblement ce n'est pas ce que tu veux faire.

Une autre idée, c'est d'écrire une applet java pour ce faire, de la
signer, et que tes utilisateurs l'acceptent comme « sûre ».
Si tu veux te tourner vers cette solution, le bon groupe sera alors
fr.comp.lang.java.

Avatar
ASM

Bonjour,

Je cherche une solution pour que l'utilisateur d'un service web puisse
transmettre le chemin d'un dossier sur son PC (poste client), sans avoir à
le taper dans un champ de formulaire. L'idéal serait donc d'ouvrir une boîte
de dialogue pour lui permettre de parcourir l'arborescence de ses fichiers
et sélectionner le dossier approprié. En cherchant sur MDSN (l'utilisateur
se servira exclusivement de MSIE,

Quelqu'un a une (autre) idée ?


comme je ne connais rien à MSIE et aux activeX

<form name="fichier">
Choississez votre fichier sur votre DD : <input type=file name="explorer">
et confirmez : <input type="button" onclick="alert(document.fichier.explorer.value);">
</form>

(on aurais pu mettre l'alert dans un onchange du explorer
mais ce bête MSIE ne valide le onchange que si on clique en dehors du champ)

comme c'est un dossier que tu cherches c'est un peu + compliqué
faudra expliquer à l'utilisateur d'y choisir un fichier au hasard
et, par le JS, d'en faire expurger ce fichier du path obtenu

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Avatar
Olivier Miakinen

<form name="fichier">
Choississez votre fichier sur votre DD : <input type=file name="explorer">
et confirmez : <input type="button" onclick="alert(document.fichier.explorer.value);">
</form>


Est-ce que tu l'as essayé ? D'après la doc, j'aurais juré que la valeur
était le contenu du fichier et non pas son nom.

Avatar
ASM


<form name="fichier">
Choississez votre fichier sur votre DD : <input type=file name="explorer">
et confirmez : <input type="button" onclick="alert(document.fichier.explorer.value);">
</form>


Est-ce que tu l'as essayé ?


Et toi ?

D'après la doc,


Ho ! Ha oui ! les docs... il paraît que ça existe ? ;-)

j'aurais juré que la valeur
était le contenu du fichier et non pas son nom.


Pas re-essayé recemment, et c'est écrit là ici direct
(donc, comme tout ce que je donne :
à vérifier et à prendre avec des pincettes)

ça ne marche pas avec iCab qui ne nous retourne que le nom du fichier
ça ne marche pas avec mon Mozilla sur mon vieux Mac
(qui oublie de mentionner fille:// en début)

j'ai certainement un test-démo qque part ... mais z'où ? ... ?

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************


Avatar
ASM


j'aurais juré que la valeur
était le contenu du fichier et non pas son nom.



Piste de réflexion :

oui, normalement avec un file
le form conteneur de ce file envoie le contenu du fichier
(ne pas oublier le enctype)

mais, là, ici, présentement, je m'interresse au
contenu apparaissant dans le champ
après avoir choisi le fichier
document.formulaire.fichier.value


Question subsidiaire :

Toi qui a la doc, expliquent-ils s'il est possible de récupérer
le contenu du fichier (sans le poster) dans un inneHTML par exemple ?

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************


Avatar
Olivier Miakinen

<form name="fichier">
Choississez votre fichier sur votre DD : <input type=file name="explorer">
et confirmez : <input type="button" onclick="alert(document.fichier.explorer.value);">
</form>


Est-ce que tu l'as essayé ?


Et toi ?


Non, malheureusement. Si j'avais déjà écrit ce genre de formulaire,
j'aurais probablement été plus catégorique.

D'après la doc,


Ho ! Ha oui ! les docs... il paraît que ça existe ? ;-)


La voilà :
http://www.w3.org/TR/html4/

Je viens même de voir que la traduction française est pas mal avancée :
http://www.la-grange.net/w3c/html4.01/cover.html

Le chapitre concernant les formulaires :
http://www.la-grange.net/w3c/html4.01/interact/forms.html

Pas re-essayé recemment, et c'est écrit là ici direct


Donc tu l'as déjà essayé, ce qui n'es pas mon cas. Si tu l'as fait,
c'est bien évidemment que c'est possible. Tant mieux pour Luca.

ça ne marche pas avec iCab qui ne nous retourne que le nom du fichier
ça ne marche pas avec mon Mozilla sur mon vieux Mac
(qui oublie de mentionner file:// en début)


Ah mince ! Mais bon, c'est MSIE qui l'intéresse.



Avatar
Olivier Miakinen

Question subsidiaire :

Toi qui a la doc, expliquent-ils s'il est possible de récupérer
le contenu du fichier (sans le poster) dans un inneHTML par exemple ?


Je pensais que ce serait dans document.formulaire.fichier.value
justement mais la doc n'est pas vraiment lumineuse sur ce point.
http://www.la-grange.net/w3c/html4.01/interact/forms.html
http://www.w3.org/TR/html4/interact/forms.html

Avatar
Cenekemoi

Question subsidiaire :

Toi qui a la doc, expliquent-ils s'il est possible de récupérer
le contenu du fichier (sans le poster) dans un inneHTML par exemple ?


Je pensais que ce serait dans document.formulaire.fichier.value
justement mais la doc n'est pas vraiment lumineuse sur ce point.
http://www.la-grange.net/w3c/html4.01/interact/forms.html
http://www.w3.org/TR/html4/interact/forms.html


Heureusement, qu'on ne peut pas ! Si c'était le cas, il serait facile de
lire tout fichier sur le disque dur d'un utilisateur quelconque.
Attention aux conséquences !

--
Cordialement, Thierry ;-)


Avatar
ASM


Question subsidiaire :

Toi qui a la doc, expliquent-ils s'il est possible de récupérer
le contenu du fichier (sans le poster) dans un inneHTML par exemple ?



Heureusement, qu'on ne peut pas !


Ben si qu'on peut !
(sur mon Mac avec monIE)

http://perso.wanadoo.fr/stephane.moriaux/truc/charge_fichier.htm


--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************



Avatar
Olivier Miakinen

[ récupérer le contenu d'un fichier ]


Heureusement, qu'on ne peut pas ! Si c'était le cas, il serait facile de
lire tout fichier sur le disque dur d'un utilisateur quelconque.


Attention, il ne s'agit pas de récupérer le contenu de n'importe quel
fichier sans prévenir l'utilisateur ! Il s'agit de récupérer le contenu
du seul et unique fichier que l'utilisateur aura lui-même sélectionné
pour l'envoyer sur le réseau.

Donc non, cela ne permet pas de lire tout fichier sur le disque dur d'un
utilisateur quelconque.

La doc est sur la page déjà citée (en anglais sur w3.org, en français
sur la-grange.net). Par ailleurs, cela peut être très utile, par exemple
pour faire valider un document qui n'est pas directement accessible au
public : <http://validator.w3.org/>, « Validate by file upload ».

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.


1 2