Foros del Web » Programando para Internet » Javascript »

Validación de campo de archivo en formulario

Estas en el tema de Validación de campo de archivo en formulario en el foro de Javascript en Foros del Web. Wenas a tod@s Estoy intentando validar un campo de archivo y a pesar de las múltiples ayudas q he encontrado en internet, no entiendo xq ...
  #1 (permalink)  
Antiguo 20/06/2008, 18:13
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 1
Validación de campo de archivo en formulario

Wenas a tod@s
Estoy intentando validar un campo de archivo y a pesar de las múltiples ayudas q he encontrado en internet, no entiendo xq no funciona.
La tabla y los campos a validar son bastantes más d los q he resumido en el ejemplo q detallo a continuación, a fin d abreviarlo lo más posible.

Consta d un formulario con un sólo campo d tipo d "file", llamado "archivo". La tabla se llama "archivos" y contiene un único campo llamado "archivo", (varchar d 50).

<?php require_once('Connections/base.php'); ?>
<?php
if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['archivo']['tmp_name'])) {
$ruta_destino = "images/";
if(move_uploaded_file($_FILES['archivo']['tmp_name'], $ruta_destino . $_FILES['archivo']['name']));
$query = "INSERT INTO archivos
VALUES ('".$_FILES['archivo']['name']."')";
mysql_query($query) or die(mysql_error()); }}
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="javascript">
function comprueba_extension(formulario, archivo) {
extensiones_permitidas = new Array(".gif", ".jpg", ".doc", ".pdf");
mierror = "";
if (!archivo) {
//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
mierror = "No has seleccionado ningún archivo";
}else{
//recupero la extensión de este nombre de archivo
extension = (archivo.substring(archivo.lastIndexOf("."))).toLo werCase();
//alert (extension);
//compruebo si la extensión está entre las permitidas
permitida = false;
for (var i = 0; i < extensiones_permitidas.length; i++) {
if (extensiones_permitidas[i] == extension) {
permitida = true;
break;
}
}
if (!permitida) {
mierror = "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
}else{
//submito!
alert ("Todo correcto. Voy a submitir el formulario.");
formulario.submit();
return 1;
}
}
//si estoy aqui es que no se ha podido submitir
alert (mierror);
return 0;
}
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="formulario" id="formulario">
Archivo:
<input name="archivo" type="file" id="archivo" size="150" maxlength="150">
<br>
<br>
<input name="submit" type="button" value="Subir!" onClick="comprueba_extension(this.form, this.form.archivo.value)">
</form>
</body>
</html>

Si el tipo d botón lo pongo en "submit" en vez d "button" si lo envía a la BD y sube correctamente el archivo; si no, simplemente no hace nada

Les agradezco muchísimo cualquier sugerencia o ayuda q puedan aportar

Salu2!!
  #2 (permalink)  
Antiguo 21/06/2008, 05:39
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 1
Respuesta: Validación de campo de archivo en formulario

Enga hombre, una ayudita, q seguro q para alguien q sepa no le cuesta demasiado

Q no es sólo q nadie m haya contestado, sino q creo q puede ser el post con menos lecturas q he visto en los foros

Explico algo más, a ver si facilito la respuesta:

En el método GET he visto q sí pasa el parámetro por la URL aunque deje el bo´tón como "button", pero en el POST, no sé xq no pasa el parámetro con este tipo d botón. Si lo activo, no hace caso a la validación y tras el mensaje d q seleccione una imagen permitida lo envía sin más problemas.

Estoy desesperado, creo q no se puede solucionar. Ya lo he intentado todo, llevo días enteros para esto.

Nuevamente les pido su comprensión y ayuda. Muchísimas gracias nuevamente, aunque sigan sin contestar
  #3 (permalink)  
Antiguo 21/06/2008, 08:58
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Validación de campo de archivo en formulario

Hola pcadict0:

La forma correcta de validar un formulario es con el evento onsubmit, ya que en el formulario siempre tiene que haber un botón de tipo submit.


Un ejemplo que sí me ha funcionado:
Código PHP:
<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&iacute;tulo</title>
<
script language="javascript">
function 
comprueba_extension(farchivo) {
    
extensiones_permitidas = new Array(".gif"".jpg"".doc"".pdf");
    
mierror "";
    if (!
archivo) {
        
//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
        
mierror "No has seleccionado ningún archivo";
    }else{
        
//recupero la extensión de este nombre de archivo
        
extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
        
//alert (extension);
        //compruebo si la extensión está entre las permitidas
        
permitida false;
        for (var 
0extensiones_permitidas.lengthi++) {
            if (
extensiones_permitidas[i] == extension) {
                
permitida true;
                break;
            }
        }
        if (!
permitida) {
            
mierror "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " extensiones_permitidas.join();
        }else{
            
//submito!
            
alert ("Todo correcto. Voy a submitir el formulario.");
            return 
true;
        }
    }
    
//si estoy aqui es que no se ha podido submitir
    
alert (mierror);
    return 
false;
}
</script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="formulario" onsubmit="return comprueba_extension(document.formulario, document.getElementById('archivo').value)">
Archivo:
<input name="archivo" type="file" id="archivo" size="150" maxlength="150">
<br>
<br>
<input type="submit" type="button" value="Subir!">
</form>
</body>
</html> 
Te recomiendo un poco de paciencia para estos mensajes que contienen un documento entero (11 horitas entre tus mensajes no es demasiado), los usuarios somos normalmente muy vagos para leer parrafadas y probar códigos, es más fácil preguntar dudas concretas. Para otra ocasión usa BBcode para tu código, y elimina el PHP porque en javascript no nos aporta nada, más bien molesta.



Saludos!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 21/06/2008, 19:14
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 1
Respuesta: Validación de campo de archivo en formulario

Mil gracias darkenuke, lo probaré y ya te comento q tal m ha ido
Siento molestar x lo del PHP, no era ni mucho menos mi intención. Es sólo q como soy bastante novato y el código contiene ambos (PHP y java) no sabía muy bien donde estaba el fallo, y por tanto, donde debía d ponerlo.
Además, por desgracia tampoco entiendo a q t refieres con lo d BBcode
Mis sinceras disculpas nuevamente y salu2!!
  #5 (permalink)  
Antiguo 21/06/2008, 19:26
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 1
Respuesta: Validación de campo de archivo en formulario

...por cierto.... si t cuento cómo había conseguido "solucionarlo" seguro q t causa hasta risa xq había usado el validador d formularios del DW pero "retocado"; y había puesto un campo d texto normal validado como si fuese un correo electrónico (q sí lo hace el DW) con el mismo nombre q el del campo d fichero y luego simplemente eliminé el campo d texto (el del mismo nombre) y modifiqué ligeramente el código de java para poner q en lugar d "algo@algo" fuese "algo.algo", cambiando el (@) x un punto (.); además d traducirlo al "españoleitor"

De nuevo, disculpas tanto x mi impaciencia como x haber puesto PHP en la zona d java, gracias y salu2!!
  #6 (permalink)  
Antiguo 21/06/2008, 20:20
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Validación de campo de archivo en formulario

Cita:
Iniciado por pcadict0 Ver Mensaje
por desgracia tampoco entiendo a q t refieres con lo d BBcode
Con BBcode me refiero a las etiquetas [ html ], [ php ] y [ code ] para poner las cajas de código, y que se coloreen automáticamente.

De nada, me alegro de que lo hayas resuelto.

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:47.