Lo probé en local y si funcionó
html
Código HTML:
Ver original<!DOCTYPE html>
/*<![CDATA[*/
span{
cursor: pointer;
}
/*]]>*/
<script type="text/javascript"> //<![CDATA[
/* script */
function cantidad(){
var x=document.getElementsByName("archivos[]");
alert(x.length);
return false;
}
function borrar(elid){
document.getElementById(elid).setAttribute('name',null);
document.getElementById(elid).disabled = true;
}
function activar(elid){
document.getElementById(elid).setAttribute('name','archivos[]');
document.getElementById(elid).disabled = false;
}
//]]>
<form action="subir_varios.php" method="post" enctype="multipart/form-data"> <input name="archivos[]" type="file" id="uno"/> <span onclick="borrar('uno')">borrar
</span> |
<span onclick="activar('uno')">habilitar
</span> <input name="archivos[]" type="file" id="dos" /> <span onclick="borrar('dos')">borrar
</span> |
<span onclick="activar('dos')">habilitar
</span> <input name="archivos[]" type="file" id="tres" /> <span onclick="borrar('tres')">borrar
</span> |
<span onclick="activar('tres')">habilitar
</span> <input type="submit" name="procesar_subida" value="Subir" /> <input type="reset" value="restablecer" />
php
Código PHP:
Ver original<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<title>upload multiple php</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style type="text/css">
/*<![CDATA[*/
body{
font-size: 11pt;
font-family: verdana, sans-serif;
color: #252525;
}
/*]]>*/
</style>
</head>
<body>
<?php
if (isset($_POST['procesar_subida'])) { $campos_file = 0;
$archivos_enviados = 0;
$archivos_movidos = 0;
$archivos_subidos = array(); $directorio_destino = dirname(__file__) . '/subidos/'; //directorio de destino (0777) for($i = 0; $i < count($_FILES['archivos']['name']); $i++) { $campos_file++;
if ($_FILES['archivos']['name'][$i] != '') {
$archivos_enviados++;
$archivos_subidos[] = $_FILES['archivos']['name'][$i];
if (move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $directorio_destino . $_FILES['archivos']['name'][$i])) { $archivos_movidos++;
}
}
}
echo "\n<div>\n<p><b>Estadísticas:</b></p>\n";
echo "Número de campos file es $campos_file.<br/>\n";
echo "Número de archivos enviados por post es $archivos_enviados.<br/>\n";
echo "Número de archivos movidos correctamente $archivos_movidos.<br/>\n";
echo "Los nombres de archivo subidos son <br/>\n<b>" . implode('<br />', $archivos_subidos) . "</b>\n</div>\n"; }
?>
<p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Enviar otros</a></p>
</body>
</html>
El php es muy básico y no limita por extension, mimeType ó tamaño
No funcionaría si usamos el tributo multiple (@navegante no hace ninguna referencia al mismo) en nuestro input file, pero si, si lo hacemos a partir de varios campos file.
SAludos