2009-11-08 4 views
219

Note:Comment définir une valeur pour une entrée de fichier en HTML?

Les réponses & commentaires ci-dessous reflètent l'état des navigateurs existants en 2009. Maintenant, vous pouvez réellement définir la valeur de l'élément d'entrée de fichier en utilisant dynamiquement/programatically JavaScript et un objet dataTransfer ou FileList dans 2017.

Voir la réponse à cette question pour plus de détails ainsi qu'une démonstration:
How to set file input value programatically (i.e.: when drag-dropping files)?

Comment puis-je mettre la valeur de ceci?

<input type="file" /> 
+3

J'ai fait une référence complète et à jour (déc 2013) réponse à ce sujet ici: [Rappelez-vous et de repeupler entrée du fichier] (http: // stackoverflow.com/a/20537822/588079) – GitaarLAB

+2

Copie possible de [Comment paramétrer la valeur d'entrée du fichier par programme (par ex.: lors du glisser-déposer de fichiers)?] (https://stackoverflow.com/questions/47515232/how-to-set- fichier-input-value-programatically-ie-when-drag-dropping-fichiers) –

Répondre

381

Vous ne pouvez pas pour des raisons de sécurité.

Imaginer:

<form name="foo" method="post" enctype="multipart/form-data"> 
    <input type="file" value="c:/passwords.txt"> 
</form> 
<script>document.foo.submit();</script> 

Vous ne voulez pas les sites Web que vous visitez pour être en mesure de le faire, pensez-vous? =)

+0

Pouvez-vous l'effacer? Cela me dérange que le nom du fichier est mémorisé chaque fois que je revisite. Pelase voir http://stackoverflow.com/questions/41807471/can-i-reset-the-seletced-file-name-of-an-html-5-file-selector – Mawg

+1

Je comprends le problème de sécurité, mais je ne devrais pas le navigateur peut-il faire la distinction entre un chemin de fichier local dangereux et quelque chose de plus anodin comme un dataUrl? Peut-être que c'est un rêve de pipe. – cowlinator

+3

Qu'en est-il de la fonction glisser-déposer, pas moyen de définir ce fichier dans le champ de saisie? – Vedmant

26

Vous ne pouvez pas. Et c'est une mesure de sécurité. Imaginez si quelqu'un écrit un JS qui définit la valeur d'entrée du fichier dans un fichier de données sensibles?

100

Vous ne pouvez pas.

La seule façon de définir la valeur d'une entrée de fichier est de sélectionner un fichier par l'utilisateur.

Ceci est fait pour des raisons de sécurité. Sinon, vous seriez en mesure de créer un Javascript qui télécharge automatiquement un fichier spécifique à partir de l'ordinateur du client.

41

Pas une réponse à votre question (que d'autres ont répondu), mais si vous voulez avoir des fonctionnalités d'édition d'un champ de fichier téléchargé, ce que vous voulez sans doute faire est:

  • montrent la valeur actuelle de ce champ en imprimant juste le nom de fichier ou une URL, un lien cliquable pour le télécharger, ou si elle est une image: il suffit de le montrer, peut-être sous forme de vignette
  • l'étiquette <input> pour télécharger un nouveau fichier
  • une case à cocher, lorsque vérifié, supprime le fichier actuellement téléchargé. Notez qu'il n'y a aucun moyen de télécharger un fichier 'vide', donc vous avez besoin de quelque chose comme ça pour effacer la valeur du champ
-3

En fait, nous pouvons le faire. nous pouvons définir la valeur par défaut du fichier en utilisant le contrôle webbrowser dans C# en utilisant FormToMultipartPostData Library. Nous devons télécharger et inclure cette bibliothèque dans notre projet. Webbrowser permet à l'utilisateur de naviguer dans les pages Web à l'intérieur du formulaire. Une fois la page Web chargée, le script dans webBrowser1_DocumentCompleted sera exécuté. Ainsi,

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     FormToMultipartPostData postData = 
      new FormToMultipartPostData(webBrowser1, form); 
     postData.SetFile("fileField", @"C:\windows\win.ini"); 
     postData.Submit(); 
    } 

Adresser le lien ci-dessous pour le téléchargement et la référence complète.

https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com

+0

Un lien vers une solution est le bienvenu, mais s'il vous plaît assurez-vous que votre réponse est utile sans cela: [ajouter un contexte autour du lien] (// meta.stackexchange.com/a/8259/165483) afin que vos co-utilisateurs aient une idée de ce que c'est et pourquoi c'est là, puis citez la partie la plus pertinente du page que vous liez au cas où la page cible n'est pas disponible. [Réponses qui sont un peu plus d'un lien peut être supprimé.] (// stackoverflow.com/help/deleted-answers) –

+0

Voir aussi [Comment définir la valeur d'entrée de fichier par programme (par exemple: lorsque vous faites glisser des fichiers)?] (https://stackoverflow.com/q/47515232/584192) –

Questions connexes