2009-10-20 104 views
42

¿Cómo seleccionar múltiples archivos con <input type="file">?¿Cómo seleccionar múltiples archivos con <input type = "file">?

+0

Se trata de JavaScript y HTML – Mask

+0

¿Quiere decir que cargar varios archivos de una sola vez (cuando se selecciona uno a la vez y luego haga clic en subir)? ¿O quiere decir usar ctrl + clic para seleccionar varios archivos en una ventana del navegador? – cletus

+2

Puede hacerlo con HTML5 utilizando el atributo múltiple en el elemento de entrada. He aquí un gran violín que lo utiliza: http://jsfiddle.net/0GiS0/Yvgc2/ – Costa

Respuesta

38

Nueva respuesta:

En HTML5 se puede añadir el atributo multiple para seleccionar más de 1 archivo.

<input type="file" name="filefield" multiple="multiple"> 

vieja respuesta:

Sólo se puede seleccionar 1 archivo por <input type="file" />. Si desea enviar múltiples archivos, tendrá que usar varias etiquetas de entrada o usar Flash o Silverlight.

+6

Gmail usa Flash para hacer esto –

+0

¿Puede proporcionar una demostración funcional? – Mask

+0

http://www.uploadify.com/demo/ – ZippyV

60

También existe HTML5 <input type="file" multiple /> pero no sé qué tan ampliamente admitido es.

+8

No compatible con IE9 y anteriores :( –

11

Este plugin jQuery (jQuery File Upload Demo) lo hace sin flash, en la forma que está usando:

<input type='file' name='files[]' multiple /> 
+0

tampoco es compatible con IE9-, https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support#multiple-file-selection – JerryDDG

14

Todo esto debe verse como:

<form enctype='multipart/form-data' method='POST' action='submitFormTo.php'> 
    <input type='file' name='files[]' multiple /> 
    <button type='submit'>Submit</button> 
</form> 

Asegúrese de que tiene el atributo enctype='multipart/form-data' en su etiqueta <form>, o no puede leer los archivos en el servidor después del envío!

7

Puede hacerlo ahora con HTML5

En esencia se utiliza el atributo múltiple en el archivo de entrada.

<input type='file' multiple> 
+0

Aquí un gran violín que lo utiliza: http://jsfiddle.net/0GiS0/Yvgc2 – Costa

+0

¿Qué hay de soporte para esto? cosa? Canisuse.com no tiene la información. –

+0

No estoy seguro, revisé el mismo lugar, jaja. – Costa

1

HTML5 ha proporcionado un nuevo atributo múltiple para el elemento de entrada cuyo tipo de atributo es el archivo. Para que pueda seleccionar varios archivos e IE9 y las versiones anteriores no son compatibles.

NOTA: tenga cuidado con el nombre del elemento de entrada. cuando desee cargar varios archivos, debe usar una matriz y no una cadena como el valor del atributo de nombre .

ejemplo: input type = "file" name = "MyPhotos []" múltiple = "múltiple"

y si está utilizando php por lo que recibirá los datos en $ _FILES y uso var_dump ($ _ FILES) y ver la salida y hacer el proceso Ahora se puede repetir una y el resto

0
<form action="" method="post" enctype="multipart/form-data"> 
<input type="file" multiple name="img[]"/> 
<input type="submit"> 
</form> 
<?php 
print_r($_FILES['img']['name']); 
?> 
0

Copia y pega esto en tu html:

<input type="file" id="files" name="files[]" multiple /> 
<output id="list"></output> 

<script> 
function handleFileSelect(evt) { 
var files = evt.target.files; // FileList object 

// files is a FileList of File objects. List some properties. 
var output = []; 
for (var i = 0, f; f = files[i]; i++) { 
    output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ', 
       f.size, ' bytes, last modified: ', 
       f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a', 
       '</li>'); 
} 
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; 
} 

Esto viene a usted, a través de mí, desde esta página web: http://www.html5rocks.com/en/tutorials/file/dndfiles/

-1

Eso es fácil ...

<input type='file' multiple> 
$('#file').on('change',function(){ 
    _readFileDataUrl(this,function(err,files){ 
      if(err){return} 
      console.log(files)//contains base64 encoded string array holding the 
      image data 
    }); 
}); 
var _readFileDataUrl=function(input,callback){ 
    var len=input.files.length,_files=[],res=[]; 
    var readFile=function(filePos){ 
     if(!filePos){ 
      callback(false,res); 
     }else{ 
      var reader=new FileReader(); 
      reader.onload=function(e){    
       res.push(e.target.result); 
       readFile(_files.shift()); 
      }; 
      reader.readAsDataURL(filePos); 
     } 
    }; 
    for(var x=0;x<len;x++){ 
     _files.push(input.files[x]); 
    } 
    readFile(_files.shift()); 
}; 
+1

Esto ya está respondido claramente. ¿Cuál es la necesidad de agregar un javascript? ¿ejemplo? – RightHandedMonkey

Cuestiones relacionadas