Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Poner limite de tamaño a la imagen subida por un usuario

Estas en el tema de Poner limite de tamaño a la imagen subida por un usuario en el foro de PHP en Foros del Web. Hola, buenas tardes. Vengo con otro problema sobre la plataforma que ando modificando. Lo que sucede ahora es que al momento de que un usuario ...
  #1 (permalink)  
Antiguo 11/11/2016, 10:11
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Poner limite de tamaño a la imagen subida por un usuario

Hola, buenas tardes. Vengo con otro problema sobre la plataforma que ando modificando.
Lo que sucede ahora es que al momento de que un usuario ingresa su imagen de comprobante aquí el límite que hemos puesto es de 2 MB, o se supone que ese debería serlo. Si la imagen supera dicho tamaño se manda un mensaje indicando que es demasiado grande pero aquí viene el problema, a pesar de enviar ese mensaje la imagen si se guarda en la base de datos lo que puede ocasionarnos problemas después.

Mi pregunta: Cómo hacer para que obligatoriamente sea 2 MB el tamaño máximo y que si supera ese tamaño no se almacene en la BD???


Código:
Código:
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Refresh" content="10;url=./">
    </head>
    <body>
        <?php
            $target_dir = "archivos/";
            $uploadOk = 1;
            $imageFileType = pathinfo($_FILES["fileToUpload"]["name"],PATHINFO_EXTENSION);

            // Check if image file is a actual image or fake image
            if(isset($_POST["submit"])) {
                $folio=$_POST["folio"];
                include 'conexion.php';
                $tabla=$mysqli->query("select folio from asistente where folio='".$folio."'");

                if ($tabla->num_rows > 0) {            
                    $target_file = $target_dir.$folio.".".$imageFileType;
                    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
                    if($check !== false) {
                        //echo "File is an image - " . $check["mime"] . ".";
                        $uploadOk = 1;
                    } else {
                        echo "<br>Lo sentimos, el archivo enviado no es una imagen.<br>
                            Favor de crear comprobante en una imagen y enviarlo despu&eacute;s.<br>";
                        $uploadOk = 0;
                    }

                    // Check if file already exists
                    if (file_exists(basename(substr($target_file,0,-4)))) {
                        echo "<br>Lo sentimos, el archivo ya ha sido enviado.<br>";
                        $uploadOk = 0;
                    }
                    // Check file size

                    if ($_FILES["fileToUpload"]["size"] > 2097152) {
                        header("Location: index.php?error=2");
                        //echo "Sorry, your file is too large.";
                    }
                    // Allow certain file formats
                    /*if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
                    && $imageFileType != "gif" ) {
                        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
                        $uploadOk = 0;
                    }*/
                    // Check if $uploadOk is set to 0 by an error
                    if ($uploadOk == 0) {
                        echo "<br>Tu archivo NO ha sido almacenado. Favor de intentar 
                            despu&eacute;s. <br>";
                    // if everything is ok, try to upload file
                    } else {
                        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                            //echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
                            //echo basename($target_file)."<br>";
                            //echo basename(substr($target_file,0,-4).".*");
                            $target_file=$mysqli->real_escape_string($target_file);
                            $tabla=$mysqli->query("update asistente set rutaImagenPago='".$target_file."' where folio='".$folio."'"); 
                            echo "<br>Gracias por enviar tu comprobante <br>";

                        } else {
                            echo "<br>Lo sentimos, ocurrio un error al guardar el archivo<br>";
                        }
                    }
                }
            }
            echo "<br>El sitio te lleva a la p&aacute;gina principal en 10 segundos.
                <br>Si no te redirige, puedes <a href=\"./\">hacer click aqu&iacute;</a>";
        ?>
    </body>
</html>
Saludos !!
  #2 (permalink)  
Antiguo 11/11/2016, 12:33
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: Poner limite de tamaño a la imagen subida por un usuario

aqui tiene laa condicion del tamaño, solo cambiale que sea menor, no mayor ;)
Código PHP:
Ver original
  1. if ($_FILES["fileToUpload"]["size"] > 2097152) {
  2.                         header("Location: index.php?error=2");
  3.                         //echo "Sorry, your file is too large.";
  4.                     }
aqui estas diciendo que el archivo sea mayor a 2MB

cambialo asi
Código PHP:
Ver original
  1. if ($_FILES["fileToUpload"]["size"] < 2097152) {
  2.                         header("Location: index.php?error=2");
  3.                         //echo "Sorry, your file is too large.";
  4.                     }
asi dice que el archivo no supere los 2 MB
  #3 (permalink)  
Antiguo 12/11/2016, 02:19
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Poner limite de tamaño a la imagen subida por un usuario

Lo que te comentó el compañero por un lado y por otro no estas finalizando el Script, deberías utilizar de utilizar un exit o return según se requiera, para finalizar el Script justo después de la redireccion.
__________________
Unset($vida['malRollo']);
  #4 (permalink)  
Antiguo 12/11/2016, 07:22
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Poner limite de tamaño a la imagen subida por un usuario

el exit() lo ocupas asi:

Código PHP:
Ver original
  1. if ($_FILES["fileToUpload"]["size"] > 2097152) {
  2. header("Location: index.php?error=2");
  3. //echo "Sorry, your file is too large.";
  4. exit();
  5. }

Con esto el codigo deja de correr en esa linea, no lee mas hacia abajo y te manda la redirección.
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 13/11/2016, 12:43
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Poner limite de tamaño a la imagen subida por un usuario

Entonces la condicional del tamaño si está correcta, no debo cambiar como lo menciona AngelKrak.

Es cuestión de colocar sólo el exit para terminar el script. Si es así, ya quedó, gracias !!

Etiquetas: html, limite, mysql, registro, subida, tabla, tamaño, usuario
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 04:05.