2009-12-14 13 views

Antwort

55

Ja, Sie können die Funktion form.submit() verwenden. Fügen Sie einen Onchange Listener auf der Datei-Eingabe und verknüpft es mit der form.submit Funktion, etwa so:

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

Ich glaube nicht, dass Sie das tun können. Browser sind sehr, sehr streng darüber, was Sie tun können, um Upload-Felder zu archivieren, wegen des Missbrauchspotenzials. Wenn der Benutzer versehentlich eine private Datei auswählt, möchte er nicht sofort mit dem Hochladen dieser Datei auf einen zufälligen Server beginnen.

+0

nicht wahr, ich habe gerade den Code in meiner Antwort getestet, und es funktioniert (zumindest in Firefox). – Marius

+1

Ungerade, ähnlicher Code funktioniert hier nicht. Überprüfen Sie weiter ... – ceejayoz

+4

Sehr wahr ... diese Lösung wird nicht in allen Browsern funktionieren –

6

Ja, Sie folgende Unterlagen an das onchange Ereignis der Datei-Eingabe hinzufügen:

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

Dies sendet das Formular direkt nachdem der Benutzer eine Datei ausgewählt hat. Der Benutzer kann jedoch eine falsche Auswahl vor dem Senden nicht korrigieren - überprüfen Sie, ob dies wirklich sinnvoll ist.

-1

Ich bin nicht sicher, was die Einschränkungen mit dies in einem HTML-Formular tun.

Sie können es jedoch mit Flash machen. Gmail macht es - wenn ich auf "Datei anhängen" klicke, wird ich mit einem Dialog zum Durchsuchen der Dateien aufgefordert, und wenn ich diesen Dialog drücke, beginnt der Upload sofort und gibt mir auch einen Fortschrittsbalken.

Googling für "Flash Uploader" gibt Ihnen viele Möglichkeiten, aber ich habe keine Erfahrung mit ihnen.

2

Diese Lösung funktioniert für mich.

<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(); 
}; 

By the way, brauchen Sie nicht Flash zu verwenden. Gmail tun es durch XHR Level 2.

Verwandte Themen