javascript - length - ¿Cómo seleccionar múltiples archivos con<input type="file">?
input type file javascript (9)
¿Cómo seleccionar múltiples archivos con <input type="file">
?
Copie y pegue esto en su 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/
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());
};
Este plugin jQuery ( jQuery File Upload Demo ) lo hace sin flash, en la forma que está usando:
<input type=''file'' name=''files[]'' multiple />
HTML5 ha proporcionado un nuevo atributo múltiple para el elemento de entrada cuyo tipo de atributo es archivo. Por lo tanto, puede 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 múltiples archivos, debe usar una matriz y no una cadena como el valor del atributo de nombre.
ex: input type = "file" name = "myPhotos []" multiple = "multiple"
y si está usando php, obtendrá los datos en $ _FILES y usará var_dump ($ _ FILES) y verá el resultado y el procesamiento. Ahora puede iterar y hacer el resto
Nueva respuesta:
En HTML5, puede agregar el atributo multiple
para seleccionar más de 1 archivo.
<input type="file" name="filefield" multiple="multiple">
Respuesta anterior:
Solo puede seleccionar 1 archivo por
<input type="file" />
. Si desea enviar varios archivos, deberá usar varias etiquetas de entrada o usar Flash o Silverlight.
Puedes hacerlo ahora con HTML5
En esencia, utiliza el atributo múltiple en la entrada del archivo.
<input type=''file'' multiple>
También hay HTML5 <input type="file" multiple />
( specification ).
La compatibilidad con el navegador es bastante buena en el escritorio (simplemente no es compatible con IE 9 y anteriores), es menos útil en dispositivos móviles, supongo porque es más difícil de implementar correctamente según la plataforma y la versión.
Todo debe verse así:
<form enctype=''multipart/form-data'' method=''POST'' action=''submitFormTo.php''>
<input type=''file'' name=''files[]'' multiple />
<button type=''submit''>Submit</button>
</form>
¡Asegúrate de tener el enctype=''multipart/form-data''
en tu etiqueta <form>
, o no puedes leer los archivos en el lado del servidor después del envío!
<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="img[]"/>
<input type="submit">
</form>
<?php
print_r($_FILES[''img''][''name'']);
?>