Ver Mensaje Individual
  #19 (permalink)  
Antiguo 09/03/2005, 13:57
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola de nuevo.
Vaya, como suelen decir las prisas no son buenas consejeras, y no recuerdo como mire el código, pero ahora veo dos errores, veo que en el formato has cambiado la expresión que comprueba el formato, tambien veo que has cambiado el boton input button por submit.
Tambien me he dado cuenta que olvide comprobar el numero de guiones admitidos, he modificado el script, he puesto comentarios para que te sea más facil depurarlo.
<html>
<head>

<script language=JavaScript type=text/javascript>
<!--
function reset_file(current_form){
var temp_array = new Array()
for(var ctr = 0 ; ctr < current_form.length; ctr++){
if(current_form[ctr].type == "text") temp_array[ctr] = current_form[ctr].value
else if(current_form[ctr].type == "checkbox") temp_array[ctr] = current_form[ctr].checked
else temp_array[ctr] = "empty"
}
current_form.reset()
for(var ctr = 0 ; ctr < current_form.length; ctr++){
if(current_form[ctr].type == "text") current_form[ctr].value = temp_array[ctr]
else if(current_form[ctr].type == "checkbox")current_form[ctr].checked = temp_array[ctr]
}

}


function check_file(current_form){
// si esta vacio permitimos enviar el formulario
var msg = ""
if(current_form.file1.value.search(/\S/g) == -1){
alert("Mensaje si el campo esta vacio");
return false
}
// extraemos el nombre del archivo y la extension
var file2 = current_form.file1.value.match(/[^\\]+\.mp3$/i)

// la extension de archivo es valida
if(file2 != null){
// Extraemos el nombre del archivo
file2 = file2.toString().replace(/\.mp3/i,"")
// comprueba que tenga solo tres guiones

if((file2.split("-")).length == 1 ? 0: (file2.split("-")).length == 4 ? 0 : 1){
msg+=" - Solo se permiten 3 guiones.\n"
}
/*comprueba si existe un caracter no valido, en este caso son válidos los caracteres
alfanumericos _- !¡ & y espacios, si por ejemplo quieres añadir otro caracter como
valido solo debes añadirlo dentro de la varible msk_char entre los simbolos [], si
por ejemplo añades el signo + como valido te daría error porque es un simbolo utilizado
en las expresiones regulares, para que no de error solo debes enmascararlo con una barra de escape \+ */
var msk_char = /[^a-záéíóúñ_\-\s\d&\(\)\!\¡]/ig
if(msk_char.test(file2)){
var no_char = file2.match(msk_char)
var msg_char =""
for(var ctr = 0,lg = no_char == null? 0: no_char.length;ctr < lg ;ctr++) msg_char +=(msg_char.indexOf(no_char[ctr])!= -1 ? "":" "+ no_char[ctr])
msg+=(no_char == null ? "" : (msg_char.length > 3 ? " - Se han encontrado los siguientes caracteres no válidos: " : " - Se ha encontrado el siguiente caracter no valido: ")+ msg_char +"\t \n")
}
// controla el formato de la cadena
// para permitir solo dos numeros \d\d o \d{2}
// para permitir solo un numero \d o \d{1}
// para permitir entre uno y dos \d{1,2}
if(!(/^.+-.+-\(\d{1,2}\)-.+$/i).test(file2)){
msg+= " - El formato debe ser el siguiente: Grupo-Disco-(10)-Cancion\t\n"
}
}

else msg+="\nSolo son validos los archivos con la extensión mp3.\t\n"

//Si el mensaje no esta vacio
if(msg!=""){
file2 == null ? alert(msg) :alert("\nNO ES VÁLIDO EL NOMBRE \n\n" + file2+ " \n\n" + msg + "\nPor favor, renombre el archivo.\n")
reset_file(current_form)
return false
}
// esta todo bien
else return true


}


//-->
</script>


</head>

<body>



<p align="center"></p>
<p align="center">[Tamaño Máximo de archivo: 2MB]</p><p align="center">[Archivos permitidos: &nbsp;.mp3
]</p>

<div align="center"><center>
<form method="POST" action="uploader.php?action=upload" enctype="multipart/form-data" onsubmit="return check_file(this)">
<table border="0" width="600">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="35%"><p align="right"><b>E-Mail: </b>
</p>
</td>
<td width="65%"><p align="left"><input type="text" size="30" name="field_email" value="[email protected]"></p>
</td>
</tr>

<tr>
<td width="35%"><p align="right"><b>Fichero a enviar: </b></p>
</td>
<td width="65%"><p align="left"><input type="hidden" name="MAX_FILE_SIZE" value="">
<input type="file" size="30" onkeypress="return false;" name="file1" onchange="check_file(this.form)"/></p>
</td>
</tr>




<tr>
<td width="35%">&nbsp;</td>
<td width="65%">&nbsp;</td>
</tr>
<tr>
<td align="center" colspan="2" width="100%"><input class="checktype" type="checkbox" name="field_copy" value="Yes">Deseo recibir confirmación del envío</td>
</tr>
<tr>
<td width="35%">&nbsp;</td>
<td width="65%">&nbsp;</td>
</tr>
<tr>
<td align="center" colspan="2" width="100%"><input type="submit" name="field_submit" value="Subir fichero(s)" ></td>
</tr>
<tr>
<td width="35%">&nbsp;</td>
<td width="65%">&nbsp;</td>
</tr>
</table>
</form>
</center></div><p align="center"><font size="1" face="verdana"></font></p>


</body>
</html>

Espero haber dado en el clavo. :P
Saludos. :)