Foros del Web » Programando para Internet » PHP »

algunas veces no se sube la imagen

Estas en el tema de algunas veces no se sube la imagen en el foro de PHP en Foros del Web. Hola que tal, les cuento, lo que pasa es que tengo un script para subir imágenes y lo estuve probando varias veces y subía las ...
  #1 (permalink)  
Antiguo 28/07/2012, 20:21
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
algunas veces no se sube la imagen

Hola que tal, les cuento, lo que pasa es que tengo un script para subir imágenes y lo estuve probando varias veces y subía las imágenes correctamente, aparentemente, hasta que subí una imagen 826 KB y lo que ocurrió es que se subió la imagen al servidor y se guardaron los datos de la imagen en la tabla THUMBNAILS pero no en la tabla IMAGES, estuve revisando el script pero no logro ver porque no se guardan los datos en esa tabla cuando las imágenes son un poco pesadas.

Aquí el script completo:

Código PHP:
<?php

if($_POST['submit'] == "upload") {
    
    if(!
$_FILES['file']['tmp_name']) {
        
$error['upload']['empty'] = '<div style="color: red;">You can\'t leave this empty.</div>';
    } else {
        
$image_info getimagesize($_FILES['file']['tmp_name']);
        
$image_type $image_info['mime'];
        
$image_mime explode("image/"$image_info['mime']);
        
$type $image_mime[1];
        if(!
in_array($type, array("bmp""gif""jpg""jpeg""pjpeg""png""x-png"))) {
            
$error['upload']['type'] = "tipo de archivo invalido";
        }
    }
    
    
$size $_FILES['file']['size'];
    
$size_max "10485760"//10 MB
    
if($size $size_max) {
        
$error['upload']['size'] = "La imagen supero el peso permitido";
    }
    
    if(!empty(
$_POST['email'])) {
        if(!
preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})/"$_POST['email'])) {
            
$error['upload']['email'] = "Email incorrecto";
        }
    } else {
        
$error['upload']['email_empty'] = '<div style="color: red;">You can\'t leave this empty.</div>';
    }
    
    
$qwerty = array("Q","q""W","w""E","e""R","r""T","t""Y","y""U","u""I","i""O","o""P","p""A","a""S","s""D","d""F","f""G","g""H","h""J","j""K","k""L","l""Z","z""X","x""C","c""V","v""B","b""N","n""M","m""7""8""9""4""5""6""1""2""3");
            
$folder "";
            for(
$i 0$i <= 7$i++) {
                
$random array_rand($qwerty);
                
$folder .= $qwerty[$random];
                unset(
$qwerty[$random]);
            }
    
    if(
count($error) == 0) {
                    
$query_iuid "SELECT EMAIL FROM FREE_USERS WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
                    
$result_query_iuid mysql_query($query_iuid);
                    if(
mysql_num_rows($result_query_iuid) == 1) {
                        
$query_update "UPDATE FREE_USERS SET UPLOADS = UPLOADS + 1 WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
                        
$result_query_update mysql_query($query_update);
                    } else {
                        
$iuid_tmp "";
                        for(
$tmp 0$tmp <= 7$tmp++) {
                            
$random_tmp array_rand($qwerty);
                            
$iuid_tmp .= $qwerty[$random_tmp];
                            
$IUID "IUID-" wordwrap($iuid_tmp4"-"true);
                        }
                        
                        
$query_add_user "INSERT INTO FREE_USERS VALUES('$IUID', '1', '".date("Y-n-j H:i:s")."', '".mysql_real_escape_string($_POST['email'])."')";
                        
$result_query_add_user mysql_query($query_add_user);
                        
                        
$query_add_tmp_user "INSERT INTO TMP_FREE_USERS VALUES('$IUID', '".date("Y-n-j H:i:s")."')";
                        
$result_query_add_tmp_user mysql_query($query_add_tmp_user);
                        
                        include(
"src/send-mail-user.php");
                    }
                    
                    
$server = array("s1""s2");
                    
$rand_server array_rand($server);
                    
mkdir("servers/"$server[$rand_server] ."/"$folder);
                    
$name mt_rand() .'_'mt_rand() .'_'mt_rand();
                    
                    
move_uploaded_file($_FILES['file']['tmp_name'], "servers/"$server[$rand_server] ."/"$folder ."/"$name ."."$type);
                    
                    
$id uniqid();
                    
$name_img explode("."$_FILES['file']['name']);
                    
$size_format round($size 10242)." KB (".number_format($size)." bytes)";
                    
$location "http://".$server[$rand_server].'.'.$_SERVER['SERVER_NAME'].'/'.$root[$rand_root].$folder.'/'.$name.'.'.$type;
                    list(
$width$height) = getimagesize($location);
                    
$dimensions utf8_decode($width."px × ".$height."px");
                    
$date date("Y-n-j H:i:s");
                    
$image_base64 base64_encode(file_get_contents($location));
                    
$pin sha1(md5($location));
                    
                    
$query_search_iuid "SELECT IUID FROM FREE_USERS WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
                    
$result_query_search_iuid mysql_query($query_search_iuid);
                    if(
mysql_num_rows($result_query_search_iuid) == 1) {
                        
$query_more_iuid "SELECT * FROM FREE_USERS WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
                        
$resultquery_more_iuid mysql_query($query_more_iuid);
                        
$row mysql_fetch_assoc($resultquery_more_iuid);
                        
$query_insert_images "INSERT INTO IMAGES VALUES ('".$row['IUID']."', '$id', '$name_img[0]', '".strtoupper($type)."', '$size_format', '$dimensions', '$date', '$location', '$image_base64', '$pin')";
                        
$result_query_insert_images mysql_query($query_insert_images);
                        
$query_insert_tmp_images "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
                        
$result_query_insert_tmp_images mysql_query($query_insert_tmp_images);
                    } else {
                        
$query_insert_images "INSERT INTO IMAGES VALUES ('$IUID', '$id', '$name_img[0]', '".strtoupper($type)."', '$size_format', '$dimensions', '$date', '$location', '$image_base64', '$pin')";
                        
$result_query_insert_images mysql_query($query_insert_images);
                        
$query_insert_tmp_images "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
                        
$result_query_insert_tmp_images mysql_query($query_insert_tmp_images);
                    }
                    
        require(
"src/create-thumb.php");
        
$query_save_thumbnails "INSERT INTO THUMBNAILS VALUES ('$id', '$thumb_square_75', '$thumb_medium_640')";
        
$result_query_save_thumbnails mysql_query($query_save_thumbnails);
        
        require(
"src/send-mail.php");
        
        
$_SESSION['free_upload'] = TRUE;
       
$_SESSION['upload_id'] = $id;
       
$_SESSION['thumb_preview'] = $thumb_square_75;
    }
}

?>
Espero que me puedan ayudar a corregir este error.

Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 28/07/2012, 21:40
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: algunas veces no se sube la imagen

Holas,

En la linea:

Código PHP:
Ver original
  1. $query_search_iuid = "SELECT IUID FROM FREE_USERS WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
  2. $result_query_search_iuid = mysql_query($query_search_iuid);
  3. if(mysql_num_rows($result_query_search_iuid) == 1) {
  4. ...

Pueda ser que el resultado del mysql_num_rows sea mayor a uno y no necesariamente uno, para eso podrias asegurarte de que sea mas o menos:

Código PHP:
Ver original
  1. ...
  2. if(mysql_num_rows($result_query_search_iuid) > 0) {
  3. ...

Otro detalle seria que cuando subas el archivo seria bueno que te asegures que realmente lo suba, algo como:

Código PHP:
Ver original
  1. ...
  2. if(move_uploaded_file($_FILES['file']['tmp_name'], "servers/". $server[$rand_server] ."/". $folder ."/". $name .".". $type))
  3. ..

Nos avisas.

Saludos
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 28/07/2012, 23:17
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: algunas veces no se sube la imagen

Cita:
Iniciado por gildus Ver Mensaje
Holas,

En la linea:

Código PHP:
Ver original
  1. $query_search_iuid = "SELECT IUID FROM FREE_USERS WHERE EMAIL = '".mysql_real_escape_string($_POST['email'])."'";
  2. $result_query_search_iuid = mysql_query($query_search_iuid);
  3. if(mysql_num_rows($result_query_search_iuid) == 1) {
  4. ...

Pueda ser que el resultado del mysql_num_rows sea mayor a uno y no necesariamente uno, para eso podrias asegurarte de que sea mas o menos:

Código PHP:
Ver original
  1. ...
  2. if(mysql_num_rows($result_query_search_iuid) > 0) {
  3. ...

Otro detalle seria que cuando subas el archivo seria bueno que te asegures que realmente lo suba, algo como:

Código PHP:
Ver original
  1. ...
  2. if(move_uploaded_file($_FILES['file']['tmp_name'], "servers/". $server[$rand_server] ."/". $folder ."/". $name .".". $type))
  3. ..

Nos avisas.

Saludos
Hola que tal gildus, gracias por responder.

Probé así como indicas y sigue igual, sube correctamente las imágenes pesadas al servidor y guarda los datos en la tabla THUMBNAILS pero no en IMAGES, en cambio las imágenes no pesadas si las sube correctamente y guarda los datos en ambas tablas.

Saludos!
  #4 (permalink)  
Antiguo 29/07/2012, 14:49
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: algunas veces no se sube la imagen

Disculpa me olvide en lo principal, pero intentastes validar si ejecuta correctamente tus query?:

Código PHP:
Ver original
  1. if(mysql_num_rows($result_query_search_iuid) == 1) {    
  2.     ...
  3.     $query_insert_images = "INSERT INTO IMAGES VALUES ('".$row['IUID']."', '$id', '$name_img[0]', '".strtoupper($type)."', '$size_format', '$dimensions', '$date', '$location', '$image_base64', '$pin')";
  4.     $result_query_insert_images = mysql_query($query_insert_images) or die(' Paso 1'.mysql_error());
  5.     $query_insert_tmp_images = "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
  6.     $result_query_insert_tmp_images = mysql_query($query_insert_tmp_images) or die(' Paso 2'.mysql_error());
  7. } else {
  8.     ...
  9.     $result_query_insert_images = mysql_query($query_insert_images) or die('Paso 3'.mysql_error());
  10.     $query_insert_tmp_images = "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
  11.     $result_query_insert_tmp_images = mysql_query($query_insert_tmp_images) or die(' Paso 4'.mysql_error());
  12. }



Saludos
__________________
.: Gildus :.
  #5 (permalink)  
Antiguo 29/07/2012, 15:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: algunas veces no se sube la imagen

Cita:
Iniciado por gildus Ver Mensaje
Disculpa me olvide en lo principal, pero intentastes validar si ejecuta correctamente tus query?:

Código PHP:
Ver original
  1. if(mysql_num_rows($result_query_search_iuid) == 1) {    
  2.     ...
  3.     $query_insert_images = "INSERT INTO IMAGES VALUES ('".$row['IUID']."', '$id', '$name_img[0]', '".strtoupper($type)."', '$size_format', '$dimensions', '$date', '$location', '$image_base64', '$pin')";
  4.     $result_query_insert_images = mysql_query($query_insert_images) or die(' Paso 1'.mysql_error());
  5.     $query_insert_tmp_images = "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
  6.     $result_query_insert_tmp_images = mysql_query($query_insert_tmp_images) or die(' Paso 2'.mysql_error());
  7. } else {
  8.     ...
  9.     $result_query_insert_images = mysql_query($query_insert_images) or die('Paso 3'.mysql_error());
  10.     $query_insert_tmp_images = "INSERT INTO TMP_FREE_IMAGES VALUES ('$id', '$date')";
  11.     $result_query_insert_tmp_images = mysql_query($query_insert_tmp_images) or die(' Paso 4'.mysql_error());
  12. }



Saludos
Muchísimas gracias gildus, el error estaba en el paso 2 y era por un error de max_allowed_packet y ya encontré la solución.

Saludos!

Etiquetas: mysql, sql, sube, tabla, veces
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 21:48.