2011-08-11 20 views
42

Duplicar posibles: los usuarios
Retrieving file names out of a multi-file upload control with javascriptObtener tipo de entrada "archivo" = valor cuando tiene varios archivos seleccionados

De HTML5 tipo de entrada "archivo" = permite elegir varios archivos agregando el múltiple = "múltiple":

<input type="file" multiple="multiple" /> 

Mi pregunta es: ¿cómo puedo obtener el valor de esa entrada? Cuando uso el valor .va solo devuelve el nombre del archivo del primer archivo seleccionado, pero al elegir más de uno no puedo ver los otros.

lo que tengo:

<input type="file" multiple="multiple" onchange="alert(this.value)" 
    onmouseout="alert(this.value) /> 

que como he dicho, sólo muestra el nombre de uno de los archivos seleccionados.

NOTA: no quiero editar el valor (ya sé que no es posible) sólo el nombre de los archivos

Gracias!

Respuesta

77

Los archivos seleccionados se almacenan en un array: [input].files

Por ejemplo, se puede acceder a los elementos

// assuming there is a file input with the ID `my-input`... 
var files = document.getElementById("my-input").files; 

for (var i = 0; i < files.length; i++) 
{ 
alert(files[i].name); 
} 

Para las personas jQuery-cómodas, es igualmente fáciles

// assuming there is a file input with the ID `my-input`... 
var files = $("#my-input")[0].files; 

for (var i = 0; i < files.length; i++) 
{ 
alert(files[i].name); 
} 
+2

los ficheros propiedad del archivo de entrada no está definida en decir, aunque funciona bien en otros navegadores. ¿Conoces alguna forma de evitar esto? –

+3

'archivos [i]' no está definido en IE9. ¿Puede dar una solución sobre cómo hacer que funcione en IE9? – OO7

+2

@ OO7 IE9 no admite archivos de entrada múltiples. Solo es IE10 +. – barell

8

Usted use input.files property. Es una colección de File objects y cada archivo tiene un name propiedad:

onmouseout="for (var i = 0; i < this.files.length; i++) alert(this.files[i].name);" 
+0

Gracias, funciona perfectamente igual que la respuesta de freedompeace (nombre o nombre de archivo ambos funcionan) pero respondió primero y no puedo establecer dos respuestas como aceptadas, +1 a tu respuesta de todos modos – spuas

+0

En realidad, respondió sin un ejemplo de código apropiado primero y editado su publicación después de que envié la mía. Pero - realmente no importa. :) –

Cuestiones relacionadas