subir multiples archivos

Iniciado por .rn3w., 11 Octubre 2013, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

.rn3w.

hola quisiera que me ayuden a restringir el tipo de formato de los archivos que seran subidos al servidor

aqui les dejo mi avance
<html>
    <head>
        <title></title>
    </head>
    <body>
       
        <form method="post" action="CrearProblema.php" enctype="multipart/form-data">
            Nombre del problema:
            <input type="text"    name="nombre">     <br>         
     
            <label>Seleccione los archivos</label><br>
            inserte el enunciado:                               <input type="file" name="archivo[]"><br>
            inserte la entrada: &nbsp; &nbsp;                   <input type="file" name="archivo[]"><br>
            inserte la salida:  &nbsp; &nbsp;&nbsp; &nbsp;      <input type="file" name="archivo[]"><br>

            <input type="submit" value="Crear Problema">
                       
        </form>
    </body>
</html>





<?php 


    
include("cnx.php");
    
$cnx pg_connect($entrada) or die ("Error de conexion. "pg_last_error());
    
$mensaje        ="";
    
$dir            ="";
    
$seleccionar    ="SELECT nombre_problema  FROM problema";
    
$result         pg_query($seleccionar) or die('ERROR AL INSERTAR DATOS: ' pg_last_error());
    
$columnas       pg_numrows($result);


    for(
$i=1;$i<=$columnas$i++){
        
$line pg_fetch_array($resultnullPGSQL_ASSOC);
        if(!
strcmp($line['nombre_problema'] ,$_REQUEST['nombre'])){ // El nombre ya existe en la bd???
           
$mensaje="existe"
          
        }
    }    
 
    
    if(
$mensaje!="existe"){
        
    
$insertar"INSERT INTO problema(nombre_problema) VALUES ('$_REQUEST[nombre]');";
    
$result pg_query($cnx$insertar) or die('ERROR AL INSERTAR DATOS: ' pg_last_error());
    
    
$seleccionar="SELECT id_problema  FROM problema  where nombre_problema='$_REQUEST[nombre]'";
    
$result     pg_query($seleccionar) or die('ERROR AL INSERTAR DATOS: ' pg_last_error());
    
$columnas   pg_numrows($result);


    for(
$i=1;$i<=$columnas$i++){
        
$line pg_fetch_array($resultnullPGSQL_ASSOC);
        echo 
$line['id_problema'];
    }
        echo 
$_REQUEST['nombre'];
        
$dir=$line['id_problema'];
        
mkdir($line['id_problema']);

    }
    else{
       
// "enviamos un mensaje a la vista, ya existe el problema"
    
}
    

moverArchivos($_FILES); //llamamos a la funcion que mueve y comprueba los archivos


function moverArchivos($archivos){ //Optimizada para multiples archivos

$directorio "upload"//ubicacion y nombre del directorio donde se guarda
$ubicaciones = array();

$extensiones = array("in","out"); //extensiones permitidas

if(isset($archivos["archivo"]["error"])){

foreach ($archivos["archivo"]["error"] as $key => $error) {
if ($error == 0) {
$trozo explode(".",$archivos["archivo"]["name"][$key]); //obtenemos la extensión
$extension strtolower(end($trozo)); //la pasamos a minuscula
if(in_array($extension$extensiones)){
                                            
$valido true;
                                        }
                                        else{
                                            
$valido false;
                                        }


if(isset($valido) and $valido === true){ //si el archivo es valido lo intentamos mover
$nombre_archivo date("Ymd") . "_" date("is"). "_img_".$trozo[0].".".$extension//generamos un nombre personalizable
$ubicacion_original $archivos["archivo"]["tmp_name"][$key]; //ubicacion original y temporal del archivo

if(!move_uploaded_file($ubicacion_original,"$directorio/$nombre_archivo")){
echo "No se puede mover el archivo \n";
}
else{
$ubicaciones[] = $nombre_archivo;
}
}
else{
echo "Extension de archivo no valida \n";
}
                                        
} else{
if($error != and $error != 4){ //Si no subieron archivos No enviar ninguna advertencia
$mensaje_error mensajesErrorArchivos($archivos["archivo"]["error"][$key]);
echo $mensaje_error." Intente nuevamente. \n";
die;
}
}
}
return $ubicaciones;
//fin del existe error
else { echo "Uno de los archivos sobrepasa la capacidad establecida por el servidor";}

// Termina la funcion moverArchivos()

   
pg_close($cnx);
   

?>



miloscorp

Hola bjpenn creo que te estas complicando demasiado, es mas facil hacer algo asi

foreach $_FILES as archivo{
switch archivo['type']{
case "image/jpeg"
//Es jpeg
break;
case "image/gif"
//gif
break;
}
}


Igualmente $_FILE['archivo']['type'] segun la documentación no se verifica en el servidor, solamente te devuelte el mime type que te envia el navegador. Si queres verificar el mime type en el servidor tendrias que usar la función finfo_file()