Foros del Web » Programando para Internet » PHP »

Problema comprobar extension de upload

Estas en el tema de Problema comprobar extension de upload en el foro de PHP en Foros del Web. Hola, tengo este codigo de upload que se usa para subir fotos y ponerlas en una categoria en la mysql, pero el problema es que ...
  #1 (permalink)  
Antiguo 27/06/2010, 10:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Problema comprobar extension de upload

Hola, tengo este codigo de upload que se usa para subir fotos y ponerlas en una categoria en la mysql, pero el problema es que no funciona el comprobador de extension, funciona pero si lo pongo en otra parte, miren asi no funciona:

Código PHP:
<!-- Esto reemplaza a tu simple etiqueta <script> -->
<script type="text/javascript" language="javascript"> 
<!--  

function comprueba_extension(formulario, archivo) { 

//alerts para que vea lo que te muestra y lo analices
alert(formulario);
alert(archivo);

   extensiones_permitidas = new Array(".gif", ".jpg", ".png", ".bmp"); 
   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 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."); 
         //a esta linea le faltaba "document"
         document.formulario.submit(); 
         return 1; 
       } 
   } 
   //si estoy aqui es que no se ha podido submitir 
   alert (mierror); 
   return 0; 


--> 
</script> 
<!--
"this.form.name" contiene el nombre del formulario
"this.form[0].value" contiene la ruta del archivo a subir
-->


<?php 

//coloca la coneccion correcta a mysql aqui 
$conexion mysql_connect("sql201.byethost15.com""user""pass");  
//selecciona la base de datos en la que quieres trabajar 
//y si esa es la unica base de datos que tienes, no vuelvas a abrir coneccion con mysql 
//ni a seleccionar otra vez la db 
mysql_select_db("b15_5229524_graffiti"$conexion);  


$queEmp "SELECT * FROM fotos ORDER BY id DESC";   
$resEmp mysql_query($queEmp$conexion) or die(mysql_error());  
$totEmp mysql_num_rows($resEmp);  
 if (
$totEmp0) {  
    while (
$rowEmp mysql_fetch_assoc($resEmp)) {  
     
    
//while vacio... 
   
    
}  
}  


 
//si esta coneccion es la misma que la de arriba, no hace falta incluirla 
 //y menos incluirla 3 o 4 veces  
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db  
//include('config');  



$state false;  

if (
$_POST['action'] == "add" && $_FILES['archivo']['name'] != "") {   

//La subida de archivo dentro del condicional 
$ruta "./imagenes/" $_FILES['archivo']['name'];  
copy($_FILES['archivo']['tmp_name'], $ruta);  
echo 
"La imagen subio correctamente"
     
     
    
//VERIFICA A QUI: 
     
     
    //aqui conectas, denuevo pero al parecer a otra base de datos 
    
$conexion mysql_connect("sql201.byethost15.com""user""pass");  
    
//pero a una tabla del mismo nombre 
    
mysql_select_db("b15_5229524_graffiti"$conexion);  
     
    
//A $postear PUEDES DARLE UN VALOR MANUALMENTE PARA PROBAR Y QUE NO FALLE LA CONSULTA 
    
$postear $_SESSION[usuario];  

    
//session_start() debe estar precedido de la @ a esta altura del script 
    
@session_start();  
      
    
$que "INSERT INTO fotos (ruta, usuario, idusuario, categoria) ";  
    
$que.= "VALUES ('".$ruta."', '".$_SESSION[usuario]."', '".$_SESSION[idusuario]."', '".$_POST['categoria']."')";  
    
$res mysql_query($que$conexion) or die(mysql_error());  
    
$state true;  
     
     


  



}  


 
//SI INCLUDE() ES LA MISMA CONECCION A MYSQL QUE YA HICISTE NO ES NECESARIO 
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión  

/* 
if($_SESSION[level] == 1 or $_SESSION[level] == 3){  
echo '';  
}else{  
Header("Location: index.php");  

*/  

?>  
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión

if($_SESSION[level] == 2)
{
echo 
'';

}else{
Header("Location: index.php");
}
?>
<form name="formulario" form id="insertar" enctype="multipart/form-data" method="POST" action="">  
  <p align="left" class="Estilo1">Añadir discos</p>
  <p align="left"><br />  
    Imagen</p>
  <p align="left">
    <input type="file" name="archivo" id="archivo"/>
  </p>
  <p align="left">
    <label>
    <select name="categoria" id="categoria">
      <option value="1">Bocetos</option>
      <option value="2">Muros</option>
      <option value="3">Trenes</option>
      <option value="4">Otros</option>
    </select>
    </label>
  </p>
  <p align="left"><br />  
    <input type="submit" name="Submit" value="Subir imagen" onchange="comprueba_extension(this.form.name,this.form[0].value)">
      <br />  
      <input type="hidden" name="action" value="add" />
      <br />  
  </p>
</form>  

<?php  


if ($state) {  
echo 
"<p /><em>Foto agregada</em></p>";  



?>

Y asi si funciona:

Código PHP:
<form name="formulario" form id="insertar" enctype="multipart/form-data" method="POST" action="">  
  <
p align="left" class="Estilo1">A&#241;adir discos</p>
  
<p align="left"><br />  
    
Imagen</p>
  <
p align="left">
    <
input type="file" name="archivo" id="archivo" onchange="comprueba_extension(this.form.name,this.form[0].value)">
  </
p>
  <
p align="left">
    <
label>
    <
select name="categoria" id="categoria">
      <
option value="1">Bocetos</option>
      <
option value="2">Muros</option>
      <
option value="3">Trenes</option>
      <
option value="4">Otros</option>
    </
select>
    </
label>
  </
p>
  <
p align="left"><br />  
    <
input type="submit" name="Submit" value="Subir imagen" />
      <
br />  
      <
input type="hidden" name="action" value="add" />
      <
br />  
  </
p>
</
form



Simplemente cambio el
Código:
onchange="comprueba_extension(this.form.name,this.form[0].value)"
a el formulario archivo, pero no te deja elegir la opcion de categoria, cuando pones la foto luego luego se pone fomulario, y das aceptar, despues, imagen.jpg, y dice todo correcto voy a sumbitir el formulario.

Pero yo quiero que aparesca eso hasta que le den en el boton enviar.

Etiquetas: extension, upload
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 01:38.