Impossible de copier/coller un path dans un input type file sous FF3

Impossible de copier/coller un path dans un input type file sous FF3 - HTML/CSS - Programmation

Marsh Posté le 25-08-2010 à 11:16:46    

Bonjour,
Depuis Firefox 3, le comportement du input type "file" a beaucoup changer (sans doute pour des raisons de sécurité) : difficile de récupérer le path complet du fichier sélectionné (j'ai fini par trouver une solution pour ça), blocage de l'envoi du formulaire si on modifie via JS le contenu du input file et surtout, impossible de copier/coller un path dans le champ :(
 
Existe t-il un privilège à mettre dans le about:config ou le user.js qui permettrait de remettre le comportement du input file comme c'était sous FF2?
 
Merci :)
 
Edit : pour ceux que ça intéresse, pour récupérer le path complet d'un input type file sous FF3, faut mettre la ligne suivante dans un try/catch avant de tenter de récupérer le .value du champ :

Code :
  1. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect" );


Pour pouvoir activer ce privilège, faut auparavant que le user ait configuré son about.config avec la clé "signed.applets.codebase_principal_support" à true.


Message édité par rufo le 25-08-2010 à 11:20:16

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-08-2010 à 11:16:46   

Reply

Marsh Posté le 25-08-2010 à 13:40:09    

La sécurité tu sais ce que ça signifie ?
si je pouvais modifier le input file, je pourrais du coup récupérer n'importe quel fichier sur la machine de l'utilisateur.
 
Je ne vois pas du tout pourquoi tu aurais besoin du path du fichier de l'utilisateur.
Tu peux expliquer pourquoi ?


---------------
Blablaté par Harko
Reply

Marsh Posté le 25-08-2010 à 15:16:12    

Pour info, ce nouveau comportement a été très critiqué depuis 2008 sur le web. Ne pas permettre à l'utilisateur de faire un copier/coller d'un path de fichier direct dans le input file est quand même pas pratique (alors que FF2 et inférieur le permettaient). :/
 
Et je ne critique pas le fait que le JS ne puisse pas renseigner l'attribut value du input file. Je critique le fait que de vider la valeur du input file fait que FF3 bloque l'envoi du formulaire.
 
Pour le contexte de mon besoin (appli Astres), j'ai des fiches documentaires dans un intranet qui référencent des docs sur un lecteur réseau. Sur chaque fiche, j'ai besoin d'avoir un bouton qui permette d'ouvrir le fichier avec un lien local en file://. Il faut donc que l'utilisateur puisse saisir le path du fichier facilement mais de mon côté, j'ai pas besoin de télécharger le fichier sur le serveur, je veux juste le path. Quand le navigateur officiel était FF2 (ou < ), pas de pb. J'utilise un input type file qui sert d'IHM pour saisir le path. Au moment de l'envoi du formulaire, pour pas uploader le fichier, je copie le path du fichier dans un champ caché et je vide le input file. Avec FF3, ça ne marche plus, Firefox bloque l'envoi du form car il détecte un comportement douteux d'un JS.Mais j'ai résolu ce pb avec netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect" ); et la clé signed.applets.codebase_principal_support" à true dans le about:config.
 
Sauf que les fiches documentaires référencent aussi des docs qui se trouve sur une GED (web). Donc des fois, le path peut être une url. Sous FF2, pas de pb, l'utilisateur copie/colle l'url dans le input file, contenu copié ensuite dans le champ caché. mais là, plus possible de copier/coller quoi que ce soit dans le input file sous FF3 :( Je me demandais donc s'il n'existait pas une clé dans le about:config ou un privilège permettant de remettre le copier/coller actif dans les input type file...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-08-2010 à 15:55:11    

Sinon, pour FF3 uniquement, j'ai trouvé ça pour sélectionner un fichier avec une belle IHM :

Code :
  1. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect" );
  2. const nsIFilePicker = Components.interfaces.nsIFilePicker;
  3. var fp = Components.classes["@mozilla.org/filepicker;1"]
  4.                    .createInstance(nsIFilePicker);
  5. fp.init(window, "Dialog Title", nsIFilePicker.modeOpen);
  6. fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText);
  7. var rv = fp.show();
  8. if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {
  9.   var file = fp.file;
  10.   // Get the path as string. Note that you usually won't
  11.   // need to work with the string paths.
  12.   var path = fp.file.path;
  13.   // work with returned nsILocalFile...
  14. }


 
Mais c'est quand même plus compliqué que ma solution initiale qui avait le mérite de marcher sur tous les navigateurs... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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