Upload image to directory and insert file name in database DO NOT UPLOAD IMAGE

0

In a form that selects an image (as user profile photo), you want to enter the file name (example: "abc.jpeg") in the database, and the image (in jpg, jpeg format) or png) in a directory called "avatar.user /". With the following code I have managed to insert the file name in the database, but I do not upload the image to the directory . What am I doing wrong?

// Recibo los datos de la imagen
$nombre_imagen = $_FILES['avatarUsuario']['name'];
$tipo = $_FILES['avatarUsuario']['type'];
$tamano = $_FILES['avatarUsuario']['size'];
$avatarUsuario = addslashes(file_get_contents($_FILES['avatarUsuario']['tmp_name']));

//Subir imagen...
$avatarUsuario = $_FILES['avatarUsuario']['name'];
$formatosImagen = array ('.jpg','.png','.jpeg');
    if (isset($_POST['nombreUsuario']))
        {
        $avatarUsuario = $_FILES['avatarUsuario']['name'];
        $TMPavatarUsuario = $_FILES['avatarUsuario']['tmp_name'];
        $EXTENSIONavatarUsuario = substr ($avatarUsuario, strrpos ($avatarUsuario, '.'));
            if (in_array($EXTENSIONavatarUsuario,$formatosImagen))
            {
                if (move_uploaded_file($TMPavatarUsuario, "avatarUsuario/$avatarUsuario")){
                    echo "¡Archivo $avatarUsuario subido exitosamente!";

                }else{
                    "Ocurrió un error";
                }

            }else
            {
                echo "Tipo de archivo no permitido";
            }
        } 
    
asked by r84 10.12.2017 в 20:41
source

1 answer

0

Try this, it should work for you, remember the absolute paths.

   //INSERTAR IMAGEN

//Recorda definir esto en tu PHP para que te calcule los MB:

define('KB', 1024);
    define('MB', 1048576);
    define('GB', 1073741824);
    define('TB', 1099511627776);

//Recibo datos:
                    $nombre_img = $_FILES['avatarUsuario']['name'];
                    $tipo = $_FILES['avatarUsuario']['type'];
                    $tamano = $_FILES['avatarUsuario']['size'];
   //Fin recibo datos                
                    //Si existe imagen y tiene un tamaño correcto
                    if (($_FILES['avatarUsuario']['name'] == !NULL) && ($_FILES['avatarUsuario']['size'] <= 10*MB)) 
                    {
                       //indicamos los formatos que permitimos subir a nuestro servidor
                       if (($_FILES["avatarUsuario"]["type"] == "image/gif")
                       || ($_FILES["avatarUsuario"]["type"] == "image/jpeg")
                       || ($_FILES["avatarUsuario"]["type"] == "image/jpg")
                       || ($_FILES["avatarUsuario"]["type"] == "image/png"))
                       {

                          //RECORDA LA DIRECCION PARA SUBIR IMAGEN DEBE SER ABSOLUTA, TENES QUE CONSEGUIRLA CON: $_SERVER['DOCUMENT_ROOT']/carpetadesubida/ (Lo ideal es hacer un echo y ir probando hasta que te de la direccion de la carpeta

                          $nombre_img=substr(md5(date('l jS \of F Y h:i:s A')),0,5).$nombre_img; //Imagen con nombre único tomando los 5 últimos dígitos de la encriptacion MD5 del tiempo.

                          move_uploaded_file($_FILES['avatarUsuario']['tmp_name'],"RUTA ABSOLUTA/".$nombre_img);
                        } 
                        else 
                        {
                           //si no cumple con el formato
                           echo "No se puede subir una imagen con ese formato ";
                        }
                    } 
                    else 
                    {
                       //si existe la variable pero se pasa del tamaño permitido
                       if($nombre_img == !NULL) echo "La imagen es demasiado grande"; 
                    }
        //FIN INSERTAR IMAGEN
    
answered by 15.12.2017 в 20:10