Yo uso algo así:
Código:
<script>
// Determinamos las extensiones de los archivos
extArray = new Array('zip', 'rar', 'ace'); // <---- Extensiones válidas
function extension(file) {
allowSubmit = false;
if (!file) return;
file = file.slice(file.lastIndexOf("\\")+1);
// Sacamos el nombre del archivo (y solucionamos bug Opera 6)
if (file.indexOf('"') != -1) {
var archivo = file.substring(0,file.indexOf('"'));
file = file.substring(0,file.indexOf('"'));
} else {
var archivo = file;
}
// Sacamos la extension del archivo y la pasamos a minusculas
file = file.slice(file.lastIndexOf(".")+1);
var ext = file.toLowerCase();
// Comparamos con los elementos del array
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext) {
allowSubmit = true;
break;
}
}
// Si la extension no es válida, avisamos
if (!allowSubmit) {
alert("Se permiten únicamente archivos con la extensión:\n" + (extArray.join("\n")) + "\n\nEl archivo " + archivo + " no es válido. Por favor, seleccione otro archivo e intente de nuevo.");
document.subir.archivo.focus();
}
return allowSubmit;
}
</script>
<form method="post" action="script.php" enctype="multipart/form-data" onSubmit=" return extension(this.form.archivo.value)">
<input type="file" name="archivo">
De todas formas esta validación es fácil que se la salte el usuario por ser javascript, lo mejor es que además de esto pongas una validación a nivel de servidor (PHP, ASP...)