2009-12-14 13 views

Respuesta

55

sí, puede usar la función form.submit(). Añadir un detector de onchange en el archivo de entrada y vincularlo a la función form.submit, así:

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

No creo que pueda hacer esto. Los navegadores son muy, muy estrictos con respecto a lo que puede hacer en los campos de carga de archivos, debido al potencial de abuso. Si el usuario selecciona accidentalmente un archivo privado, no le gustaría que comience inmediatamente a cargar ese archivo a un servidor aleatorio.

+0

no es cierto, acabo de probar el código en mi respuesta, y funciona (al menos en Firefox). – Marius

+1

Impar, el código similar no funciona aquí. Verificando más ... – ceejayoz

+4

Muy cierto ... esta solución NO funcionará en todos los navegadores –

6

sí, se puede añadir lo siguiente a la onchange caso de la entrada de archivo:

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

esto envía el formulario justo después de que el usuario haya elegido un archivo. Sin embargo, el usuario no puede corregir una selección errónea antes de enviarla; asegúrese de verificar si esto es realmente acertado.

-1

No estoy seguro de cuáles son las restricciones para hacer esto en un formulario HTML.

Puede, sin embargo, hacerlo con Flash. Gmail lo hace: cuando hago clic en "Adjuntar un archivo", aparece un cuadro de diálogo de búsqueda de archivos y, cuando lo apruebo, la carga comienza inmediatamente y también aparece una barra de progreso.

Google para "Flash uploader" le dará muchas opciones, pero no tengo experiencia con ninguna de ellas.

2

Esta solución funciona para mí.

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

Por cierto, no es necesario utilizar el flash. Gmail hacerlo por XHR nivel 2.

Cuestiones relacionadas