Foros del Web » Programando para Internet » PHP »

Subida multiple de fotografías.

Estas en el tema de Subida multiple de fotografías. en el foro de PHP en Foros del Web. Hola a todos. Me he topado con un error que no se como arreglarlo. He creado, un formulario para subir 12 fotografías a la vez, ...
  #1 (permalink)  
Antiguo 20/03/2010, 08:46
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Subida multiple de fotografías.

Hola a todos.

Me he topado con un error que no se como arreglarlo.

He creado, un formulario para subir 12 fotografías a la vez, pero cuando le doy al boton para subirlas no me hace nada, solamente me deja subir 4 fotografía... Luego me he dado cuenta que es por el tamaño total de todos los archivos. He probado en fotofrafias pequeñas de apenas 30 Kb y asi funciona todas, pero si la imagen ocupa 1 o 2 mb, ahí se queda y no hace nada.

El script que uso es este:

Código PHP:
            ini_set("memory_limit""200000000");
            
ini_set("set_time_limit""300");
            if (@
chdir ("../../../fotografias/$_GET[id]")) {}
                else
                {
                    
$destino "../../../fotografias/$_GET[id]";
                    
mkdir ($destino);
                    
chmod($destino0777);
                }
            for (
$i=1;$i<=12;$i++)
                {
                
$imag="imagen$i";

            
$max_upload_width 640;
            
$max_upload_height 480;

            
// if uploaded image was JPG/JPEG
            
if($_FILES[$imag]["type"] == "image/jpeg" || $_FILES[$imag]["type"] == "image/pjpeg"){
                
$image_source imagecreatefromjpeg($_FILES[$imag]["tmp_name"]);

            }
            
// if uploaded image was GIF
            
if($_FILES[$imag]["type"] == "image/gif"){
                
$image_source imagecreatefromgif($_FILES[$imag]["tmp_name"]);
            }
            
// BMP doesn't seem to be supported so remove it form above image type test (reject bmps)
            // if uploaded image was BMP
            
if($_FILES[$imag]["type"] == "image/bmp"){
                
$image_source imagecreatefromwbmp($_FILES[$imag]["tmp_name"]);
            }
            
// if uploaded image was PNG
            
if($_FILES[$imag]["type"] == "image/x-png"){
                
$image_source imagecreatefrompng($_FILES[$imag]["tmp_name"]);
            }

            if(
$_FILES[$imag]["type"] == "image/png"){
                
$image_source imagecreatefrompng($_FILES[$imag]["tmp_name"]);
            }

            
$remote_file "../../../fotografias/$_GET[id]/".$_FILES[$imag]["name"];

            echo 
$remote_file;

            
imagejpeg($image_source,$remote_file,50);
            
chmod($remote_file,0777);

            list(
$image_width$image_height) = getimagesize($remote_file);

            
$ratio$image_width$image_height;

            if (
$ratio>1.5 or $ratio<0.6)
                {
$mensaje="Los tama&ntilde;os de la imagen (ancho x alto) son err&oacute;neos";
                 
unlink($destino);
                 
$seguir=0;
                 
$mostrar_mensaje=1;
                }
            else
                {
                    if(
$image_width>$max_upload_width || $image_height >$max_upload_height){
                        
$proportions $image_width/$image_height;

                        if(
$image_width>$image_height){
                            
$new_width $max_upload_width;
                            
$new_height round($max_upload_width/$proportions);
                        }
                        else{
                            
$new_height $max_upload_height;
                            
$new_width round($max_upload_height*$proportions);
                        }

                        
$new_image imagecreatetruecolor($new_width $new_height);
                        
$image_source imagecreatefromjpeg($remote_file);

                        
imagecopyresampled($new_image$image_source0000$new_width$new_height$image_width$image_height);
                        
imagejpeg($new_image,$remote_file,100);

                        
imagedestroy($new_image);
                    }

                
imagedestroy($image_source);
                }
            } 
Con esto lo que hago es redimensionarla si es muy grande para que no ocupe mucho...

¿como lo puedo hacer para realizar una subida multiple sin tener este problema ?

Muchas gracias.
  #2 (permalink)  
Antiguo 20/03/2010, 08:54
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Subida multiple de fotografías.

Quizá sea por el tamaño, como dedujiste. Hice un cálculo, 12 * 30kb = 360kb, pero si las imágenes son de 1mb o más, obviamente dará 12mb o más. Así que debe ser el límite de subida. Probablemente te esté tomando todas las imágenes como una sola, o algo similiar.

Si tienes acceso a tu php.ini, deberías modificar la siguiente directiva :

Código:
upload_max_filesize = 2M
O en su defecto, deberías utilizar ini_set, como ya lo estás usando.

Espero te sirva. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: fotografías, subida
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 07:44.