0

Tengo el siguiente código para guardar archivos en php, funciona correctamente, me crea bien la ruta con el id correspondiente

        $permitidos = array("application/pdf");     
        $limite_kb = 8360;

        if(in_array($_FILES["acta"]["type"], $permitidos) && $_FILES["acta"]["size"] <= $limite_kb * 1024){

          $ruta = '../../files/personas/proyectos/actas/'.$id_persona.'/';
          $acta = $ruta.$_FILES["acta"]["name"];

          if(!file_exists($ruta)){

              mkdir($ruta);
          }

          if(!file_exists($acta)){

              $resultado1 = @move_uploaded_file($_FILES["acta"]["tmp_name"], $acta);



          } else{

              $actaErr= "El archivo ya existe";
              $valid = false;
          }
        } else{
          $actaErr= "Formato no valido o el archivo sobrepasa el tamaño permitido. Solo se aceptan archivos PDF y el tamaño máximo que puede enviar es de 8 MB";
          $valid = false;
        }

      }else{
          $actaErr= "Ups! El acta de asamblea es obligatoria";
          $valid = false;
      }

Pero quiero agregar una carpeta más después de $id_persona con el $id_proyecto intenté así pero me manda el error Warning: mkdir(): No such file or directory

 $ruta = '../../files/personas/proyectos/actas_asamblea/'.$id_persona.'/'.$id_proyecto.'/';
IndiraRivas
  • 416
  • 2
  • 18
  • El tercer parámetro de [`mkdir`](http://php.net/manual/es/function.mkdir.php) hace que se creen las subcarpetas recursivamente si no existen. Es mas o menos lo que se plantea en https://es.stackoverflow.com/a/173540/81450 – alo Malbarez Nov 28 '18 at 23:25
  • Posible duplicado de [¿Como crear una carpeta automáticamente cuando un usuario se registra en mi web?](https://es.stackoverflow.com/questions/173537/como-crear-una-carpeta-autom%c3%a1ticamente-cuando-un-usuario-se-registra-en-mi-web) – alo Malbarez Nov 29 '18 at 00:11

1 Answers1

1

Pongamos un ejemplo en el que $id_persona no existe. Como accedes a id_proyecto?

Tendrás que comprobar primero si existe la ruta $id_persona para luego crear $id_proyecto

$ruta = '../../files/personas/proyectos/actas/'.$id_persona.'/';

if(!file_exists($ruta)){
   mkdir($ruta);
}
$ruta = '../../files/personas/proyectos/actas/'.$id_persona.'/'.$id_proyecto.'';

if(!file_exists($ruta)){
   mkdir($ruta);
}

$acta = $ruta.$_FILES["acta"]["name"];

De esta manera, primero compruebas si existe el directorio $id_persona y si no existe lo creas, luego compruebas $id_proyecto y si no existe lo creas.

Jose
  • 1,009
  • 1
  • 4
  • 15