web-dev-qa-db-fra.com

Comment soumettre une entrée "fichier" sans bouton de soumission à l'aide de JavaScript?

Il existe un moyen de soumettre automatiquement un formulaire sans cliquer sur un bouton "soumettre"?

J'ai un formulaire avec une entrée "fichier". Je soumettrais le formulaire après que l'utilisateur ait sélectionné un fichier.

30
Pennywise83

oui, vous pouvez utiliser la fonction form.submit (). Ajoutez un écouteur onchange sur l'entrée de fichier et liez-le à la fonction form.submit, comme ceci:

<form action="upload.php" method="post">
<input type="file" onchange="this.form.submit()" name="myFile"/>
</form>
65
Marius

Oui, vous pouvez ajouter ce qui suit à l'événement onchange de l'entrée de fichier:

<input type='file' .... onchange='this.form.submit();'>

cela soumet le formulaire juste après que l'utilisateur a choisi un fichier. Cependant, l'utilisateur ne peut pas corriger une sélection erronée avant de soumettre - assurez-vous de vérifier si c'est vraiment sage.

8
Pekka 웃

Cette solution fonctionne pour moi.

<form enctype="multipart/form-data" method="POST" action="/upload">
  <input id="myfilefield" type="file" name="file">
  <input type="submit">
</form>

document.getElementById('myfilefield').onchange = function() {
  this.form.submit();
};

Au fait, vous n'avez pas besoin d'utiliser le flash. Gmail le fait par XHR niveau 2.

3
cwtuan

Je ne pense pas que vous puissiez faire ça. Les navigateurs sont très, très stricts quant à ce que vous pouvez faire pour déposer des champs de téléchargement, en raison du risque d'abus. Si l'utilisateur sélectionne accidentellement un fichier privé, il ne voudrait pas qu'il commence immédiatement à télécharger ce fichier sur un serveur aléatoire.

1
ceejayoz