Foros del Web » Programando para Internet » PHP »

Problema al subir imagenes superiores a 1mb

Estas en el tema de Problema al subir imagenes superiores a 1mb en el foro de PHP en Foros del Web. En mi input type file, cuando selecciono imagenes grandes, quiero decir, mayores a 1mb, 2mbs, 5mb fue mi maximo, es como si volviera al principio ...
  #1 (permalink)  
Antiguo 18/02/2011, 15:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 230
Antigüedad: 15 años, 1 mes
Puntos: 2
Problema al subir imagenes superiores a 1mb

En mi input type file, cuando selecciono imagenes grandes, quiero decir, mayores a 1mb, 2mbs, 5mb fue mi maximo, es como si volviera al principio del form, no recibo variables del _POST files, tampoco variables personalizadas que puse de $error, nada, que puede ser? Utilizo php y el form en una plantilla php para hacerlo :S


Código PHP:
<form action="<?= $upload_form ?>" method="post" enctype="multipart/form-data">
      Imágenes a subir: <select name="cantidad">
                    <script type="text/javascript">
                    for(x=1;x<=20;x++){
                    document.write("<option value="+ x +">"+ x+"</option>");
                    }
                    </script>
      </select>
      <input type="submit" name="OK" value="OK"><br />      
+ No deberán pesar más de 8MBytes.<br />
+ Deberán ser: JPG, PNG O GIF.<br /><br />
<?php    
if(isset($_POST['OK'])){
        echo 
"Elegir Im&aacute;genes para Subir<br />";
            for(
$i=1;$i<=$_POST['cantidad'];++$i){
                echo 
"<input type=\"file\" name=\"archivo[]\"><br>";
            }
    if(empty(
$_GET['album'])) {
        echo 
"<label for=\"album\">Nombre del Album:</label> <input type=\"text\" name=\"album\" size=\"20\" /><br />";
         } else {
        echo 
"<label for=\"album\">Nombre del Album:</label> <input type=\"text\" name=\"album\" size=\"20\" value=".$_GET['album']." /><br />";
                 }
        echo 
"<input type=\"submit\" name=\"SUBIR\" value=\"Subir\">";
        echo 
"<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"52428800\" />";
        echo 
"<input type=\"hidden\" name=\"cant1\" value=\"$i\">";
    }
    
    if(isset(
$_POST['SUBIR'])){
        
$cantidad2 =count($_FILES["archivo"]);
        
$album $_POST['album'];        
        
        
$partes explode("."$nombre); 
        
$extencion end($partes); 
        
        for (
$j=0;$j<=$cantidad2;$j++){
                
$archivo $_FILES["archivo"]["tmp_name"][$j]; 
                
$tamanio $_FILES["archivo"]["size"][$j];
                
$tipo    $_FILES["archivo"]["type"][$j];
                
$nombre  $_FILES["archivo"]["name"][$j];
                
// Explode para saber la extencion del archivo
                
$partes explode("."$nombre); 
                
$extencion end($partes); 

                
        if (! (
$extencion == 'jpg' or $extencion == 'JPG' or $extencion == 'png' or $extencion == 'PNG' or $extencion == 'gif' or $extencion == 'GIF') ) 
            
$error['tipo'] = 'La imagen no concuerda con los tipos permitidos.'
        
            
        if (
$tamanio >= 8388608)
            
$error['peso'] = 'El archivo excede el tamaño de 8MBytes. Tiene que pesar menos.';

        if (empty(
$album))
            
$error['album'] = 'El Album tiene que tener un nombre.';
            
             
$x=$j;
             do{
             
$x++;
                if( 
$archivo != "" ){
                    if(empty(
$error)) {
                           
$fp fopen($archivo"rb");
                           
$contenido fread($fp$tamanio);
                           
$contenido addslashes($contenido);
                           
fclose($fp);
                           
//AQUI  INSERTE EN LA BASE DE DATOS
                           
                           // Creo la carpeta del album!
                           
if (is_dir($upload_folder.$_SESSION['nickname'].'/'.$album) == FALSE) {
                           
mkdir ($upload_folder.$_SESSION['nickname'].'/'.$album);
                           }
                           
                           
// Le doy un valor RANDOM al nombre del archivo para evitar errores
                           
$randomtext substr(md5(uniqid(rand())),0,6);
                           
                           
// Le doy la ruta de subida
                           
$uploaddir=$upload_folder.$_SESSION['nickname'].'/'.$album."/";
                           
                           
// Sacamos caracteres especiales al archivo subido por si es un script malicioso
                           
$nombre htmlspecialchars($nombre);
                           
                           
// Empiezo el proceso para achivar el tamaño y dimensiones de la imágen
                            //$maxsize += 8;
                            
list($width$height) = getimagesize("$archivo");
                            if(
$width '720'$width '720';
                            elseif(
$width <= '720'$width $width;
                            if(
$height '540'$height '540';
                            elseif(
$height <= '540'$height $height;
                            
//$width = min($width, $height);
                            
$tn imagecreatetruecolor($width$height);
                            
$image imagecreatefromjpeg("$archivo");
                            
imagecopyresampled($tn$image0000$width$height$width$height);
                            
                           
//if(copy($archivo, $uploaddir.$randomtext.'_'.$nombre))
                           
if(imagejpeg($tn$uploaddir.$randomtext.'_'.$nombre90))
                                {
                                   echo 
"<b>Subida con Exito:</b> ".$nombre."<br />";
                                   
$subida true;
                                }
                           }
                        } 
//if
                    
}
                    while(
$x<$j); }
             }
        
?>
    <? if (!empty($error) && $subida != true) { ?>        <? foreach ($error as $mensaje) { ?>
            <br />+ <?= $mensaje ?>
        <? ?>
    <? ?>
</form>
  #2 (permalink)  
Antiguo 18/02/2011, 15:31
Avatar de triibhals  
Fecha de Ingreso: agosto-2010
Mensajes: 93
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema al subir imagenes superiores a 1mb

eso mismo me pasabaa a mi, checa el tipo de variable blob en mySql y pon la LongBlob
__________________
No Deseo Suerte, Porque la Suerte es para la gente que no esta preparada, Te Deseo Exito ;D

http://www.paulpalacios.tk
  #3 (permalink)  
Antiguo 18/02/2011, 15:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 230
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Problema al subir imagenes superiores a 1mb

Cita:
Iniciado por triibhals Ver Mensaje
eso mismo me pasabaa a mi, checa el tipo de variable blob en mySql y pon la LongBlob

No las subo a mysql, las subo a un directorio comun y corriente del host!
  #4 (permalink)  
Antiguo 18/02/2011, 16:17
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir imagenes superiores a 1mb

Tu hosting cual es ?
  #5 (permalink)  
Antiguo 18/02/2011, 16:20
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 9 meses
Puntos: 16
Respuesta: Problema al subir imagenes superiores a 1mb

Puede que esté limitado en el propio host.

Haz un phpinfo(); y busca la variable: upload_max_filesize y max_execution_time, a ver qué valores tienen. La primera indica el tamaño máximo de fichero que se puede subir por cada conexión PHP, y la segunda, es el tiempo máximo que puede estar ejecutándose el PHP.
  #6 (permalink)  
Antiguo 19/02/2011, 07:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 230
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Problema al subir imagenes superiores a 1mb

Estaba limitado lo ultimo, hice un .htaccess con estas variables:

Cita:
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 1000
php_value max_input_time 1000
php_value memory_limit 100M

Esa es la solución a todos los enigmas.

Etiquetas: imagenes, subir
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 14:43.