Affecter une valeur à un input file - Divers - Programmation
Marsh Posté le 02-04-2012 à 12:10:20
C'est possible de faire ça, pour des raisons évidentes de sécurité Si tu pouvais faire ça, ça voudrait dire que n'importe qui pourrait récupérer n'importe quel fichier sur ton poste.
Par ailleurs, depuis qq années, la politique de sécurité des navigateurs s'est durcie par rapport au comportement du input type "file" (ex : FF, si tu modifie avec du JS le contenu du value, la soumission du formulaire ne se fait pas).
Pour mon appli de help-desk Astres (cf ma signature), j'avais besoin de récupérer dans certains cas, le chemin d'accès du fichier uploadé par l'utilisateur, histoire de faire un lien local en file:// et non uploader le fichier sur le serveur. Ben rien que ça, j'ai galéré et pour permettre l'ouverture de liens file:// et pour mettre dans un champ caché le contenu du value du input type file. Il faut modifier le about:config de Firefox. Dans mon cas, c'est pour un intranet, donc pas trop de pb.
Conclusion : trouve autre chose. C'est quoi ton besoin initial (parce que là, ce que t'as exprimé, c'est une solution technique)? En gros, quel est le but final à atteindre du ou des scripts? Parce que dans 9 cas sur 10, si la solution technique retenue est impossible, ça vient de pb d'analyse ou de conception.
Edit : même avec du Java ou du Flash, t'auras des pbs de droits d'accès similaires...
Marsh Posté le 02-04-2012 à 12:12:43
L'autre solution c'est d'écrire un webservice complet
Je t'explique le besoin en MP.
Marsh Posté le 25-07-2013 à 07:27:38
rufo a écrit : |
Je déterre ;-)
C'est quoi le paramètre de about:config de Firefox qu'il faut modifier ?
Marsh Posté le 25-07-2013 à 09:26:58
Depuis la version 3.0 de Firefox, pour permettre l'ouverture d'un lien hypertexte en file://, il faut mettre les lignes suivantes dans le fichier user.js situé dans le sous-répertoire finissant par ".default" du répertoire C:\Documents and Settings\"votrelogin"\Application Data\Mozilla\Firefox\Profiles\"
Code :
|
Pour permettre la lecture d'un fichier sur le HDD ou modifier la valeur d'un input type texte par du javascript, dans le fichier all.js du répertoire de Firefox (dans c:\program files\), il faut ajouter la ligne suivante :
Code :
|
Ca peut se faire aussi manuellement via le about:config et créer la valeur booléenne "signed.applets.codebase_principal_support". La prise en compte de la modification de paramétrage est immédiat, il n'y a pas besoin de fermer Firefox puis de le réouvrir. Quand la valeur du contenu du input type file va être chanége par un javascript, Firefox va probablement afficher un message d'alerte demandant d'autoriser l'action. Cocher la case "se souvenir..." et cliquer sur le bouton "Autoriser".
A lire :
http://stackoverflow.com/questions [...] -privilege
https://groups.google.com/forum/#!t [...] IweZ0ZbDlQ
A noter qu'il n'est pas possible d'uploader sur un serveur un fichier non sélectionné manuellement par l'utilisateur. Encore heureux pour la sécurité !!!
Marsh Posté le 25-07-2013 à 11:08:12
Par rapport à signed.applets.codebase_principal_support, vérifier la portée (uniquement pour ton site ou pour tous les sites). Ca pourrait être vue comme une faille de sécurité dans certains cas. Moi, j'étais en contexte intranet, non ouvert depuis l'extérieur. Ca posait donc pas de pb...
Marsh Posté le 29-07-2013 à 13:45:48
Je reviens vers vous après avoir épluché toutes les solutions et toutes mes idées ...
je n'arrive pas à transmettre la photo automatiquement, même en modifiant about:config de Firefox...
Je suis vraiment à cours d'idées... J'ai besoin d'un coup de pouce...
(Je rappelle que je travaille uniquement en local, donc, je peut modifier tous les paramètres de sécurité de mon navigateur sans aucun problème...)
Voici mon petit code de test :
Code :
|
D'avance, merci
Marsh Posté le 29-07-2013 à 14:10:47
J'avais bien précisé : "A noter qu'il n'est pas possible d'uploader sur un serveur un fichier non sélectionné manuellement par l'utilisateur. Encore heureux pour la sécurité !!!"
Si l'utilisateur n'a pas sélectionné le fichier en question, le fichier ne sera pas envoyé sur le serveur, ce pour des raisons de sécurité.
Ce que j'ai donné, c'est juste pour pouvoir récupérer le chemin d'accès d'un input file et le traiter comme bon nous semble et pouvoir ouvrir un lien hypertexte de type file://
Marsh Posté le 30-07-2013 à 09:36:49
<input type="file" name="test" value="photo.jpg">
Si tu espères qu'en mettant un nom de fichier (en plus, logiquement, faudrait mettre un chemin et non un nom de fichier) dans ton input type file et qu'en cliquant sur "valider", ça va envoyer le fichier, tu te trompes, ça marchera jamais et comme dit déjà 2 fois, encore heureux, pour des raisons de sécurité !
Marsh Posté le 30-07-2013 à 21:20:52
OK je comprend bien ;-)
Le blocage se situe à quel niveau ?
Il y a peut-être moyen de débloquer la protection dans le php.ini du serveur apache local ?
Je cherche, je cherche... Je pense que rien n'est impossible ;-)
Marsh Posté le 31-07-2013 à 09:32:04
weloveyou, tu m'as l'air très familiers des technos web pour penser que tu pourras résoudre ton pb en modifiant le php.ini, donc côté serveur alors qu'il s'agit d'un pb côté client
Comme dit maintes fois dans ce topic, s'il était possible d'uploader sur un serveur un fichier pris sur le HDD d'un poste utilisateur de manière automatique, donc sans action de sa part ce qui impliquerait que l'utilisateur n'aurait donc pas connaissance de ce transfert de fichier, ça poserait 2 problèmes majeurs :
1) un pb de sécurité : si n'importe quel site peut récupérer sur ton HDD n'importe quel fichier, qu'est-ce qui l'empêche de récupérer le fichier SAM (contient les mdp chiffrés des comptes Windows si je me souviens bien) par ex ?
2) un pb légal : prendre quelque chose même numérique (ici, un fichier) sans l'accord du propriétaire, ça s'appelle du vol
Marsh Posté le 02-04-2012 à 11:09:23
Mesdames et messieurs, le bonjour
Je souhaiterais soumettre à votre sagacité la problématique suivante :
- soit une zone input de type file, d'un formulaire dont je n'ai pas les sources.
Cette zone input permet d'aller parcourir les dossiers du disque dur pour sélectionner un fichier. Le chemin du fichier s'affiche alors dans la zone input, et un bouton "charger" permet d'envoyer le fichier sur un serveur.
Dans le cadre d'une automatisation de ce fonctionnement (pour un professionnel), je suis amené à devoir "simuler" l'action humaine, c'est à dire, à l'aide d'un outil de script, affecter par code la valeur de la zone input (le chemin complet, donc), puis aller cliquer sur le bouton "charger".
Le problème vient de ce que je ne parviens pas à modifier la valeur de la zone input (sur laquelle je n'ai pas la main, je le répète, je ne peux donc travailler que sur les attributs de la zone). Comme un petit malin, je me suis dit que j'allais modifier la propriété "value" de l'input, mais ça n'a pas l'air de fonctionner beaucoup.
Pour corser le tout (sinon c'est pas rigolo), je n'ai pas la possibilité de développer un bout de code pour faire ça, je suis dans le cadre défini et normé d'un outil de script qui embarque sa propre liste finie d'instructions
Si quelqu'un a une idée, je suis preneur
Au plaisir
---------------
Nous ne sommes rien, nous n'allons vers rien. Profitons au moins du voyage !