11545 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je cherche un moyen d'attribuer une valeur à un champ de type file en utilisant javascript et sans rechargement de page (donc php à exclure).
Car le classique
document.forms['monform'].getElementById('monchampfile').value = "c:/blabla.jpg";

n'est à priori pas possible.

Quelqu'un connaît un moyen de contourner cela ?

Merci http://fullprocess.free.fr/forum/images/smiles/juggle.gif
Modifié le 15 Dec 2004 - 15:41
Modérateur
Bonjour,

Pour des raisons de sécurité évidentes, tu ne peux pas modifier la valeur d'un input type file. Tu peux seulement lire sa valeur.

Sinon, ce serait trop simple de mettre par défault un fichier du client et faire l'envoi automatique par javascript, afin de le récupérer. Ce fichier pourrait contenir des informations sensibles ou confidentielles.
Modifié le 15 Dec 2004 - 14:54
Effectivement, j'avais pas pensé aux soucis de sécurité que ça pourrais causer Smiley decu

En fait c'est parce que je travaille sur un formulaire dynamique pour transférer des fichiers via php.
Par défaut on a un seul champ de type file proposé, mais l'utilisateur peux en ajouter en cliquant sur un lien "ajouter un fichier" sans que la page ne se recharge. Et c'est quand le nouveau champ de type file apparaît que la valeur des précédents champs de type file sont effacés ??!?? Smiley bawling

vous pouvez le voir sur : http://www.aj-e-motion.com/temp/sendmefiles/testdynform.php

Merci Smiley cligne
Modérateur
a écrit :
Et c'est quand le nouveau champ de type file apparaît que la valeur des précédents champs de type file sont effacés ??!??


Pourtant, j'essaye ton formulaire avec IE 6 et rien est effacé quand j'ajoute un champ. Smiley smile

Oups ! Mais ca le fait avec Firefox !
Modifié le 15 Dec 2004 - 15:20
Modérateur
Il va falloir que tu vérifie ton code Javascript. Il est sans doute interprété différemment sur Firefox.

Cependant, j'aurais peut-être une suggestion pour toi. Au lieu d'écrire dans le document par Javascript lorsque tu veux ajouter un input file, pourquoi n'écris-tu pas en brute 10 inputs file, dont les 9 derniers seront cachés par Javascript. Lorsque tu fais Ajouter, tu en fais apparaître un, ainsi de suite jusqu'au 10e. De cette façon, si le navigateur n'a pas Javascript ou s'il est désactivé, l'utilisateur aura quand même la chance d'envoyer 10 fichiers d'un seul coup. Après tout, inutile non plus de pouvoir en envoyer davantage, ca risque de faire un envoi trop lourd et va savoir si ca va passer sur le serveur.

Je doute qu'on puisse envoyer 200 mo par un formulaire ? Smiley scared
Modifié le 15 Dec 2004 - 15:30
LOL mais ça me le fait aussi sous IE6 (XP SP2 peut être ...)

Bref tu n'a pas tort Smiley smile je vais cacher 9 champs et les afficher au fur et à mesure; c'est en effet moins casse tête LOL
Je crois que sur mon site c'est limité à 2mo par fichier mais de toute façon il n'est pas recommandé de transmettre davantage via formulaires (et d'ailleurs les hébergeurs n'aiment pas ça LOL).

Mais bon, j'eut espéré que ça fonctionne aussi ainsi Smiley eek

Merci Merkel Smiley cligne
Modérateur
De rien !

N'hésite pas à aller te présenter et si ton problème est résolu, modifie ton premier message dans le sujet et ajoute [Résolu] au début du titre.