Foros del Web » Programando para Internet » PHP »

Form de subida multiple de archivos

Estas en el tema de Form de subida multiple de archivos en el foro de PHP en Foros del Web. 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( ...
  #1 (permalink)  
Antiguo 17/02/2011, 16:26
 
Fecha de Ingreso: septiembre-2009
Mensajes: 230
Antigüedad: 15 años, 1 mes
Puntos: 2
Form de subida multiple de archivos

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>

Bueno, con imagenes INFERIORES 1mb, no hay problema, las procesa, y las sube la servidor, cunado pongo imagenes de 1.5mb, 2mb, superiores, me vuelve al inicio del script sin ningun error ni problema ni nada, como si el arhcivo fuese ignorado! o, no lo se. No anda! Algien tiene idea que peude ser? Gracias de ante mano.
  #2 (permalink)  
Antiguo 17/02/2011, 18:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Form de subida multiple de archivos

Si, "el problema" realmente no es problema, sino una simple configuracion del servidor (Apache y/o PHP) que limitan el tamaño de archivos a recibir por medio de formulario.

Dudo que puedas modificar esa opcion si estas en un servidor compartido, generalmente lo puedes hacer solo en VPS o dedicado.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: subida, formulario
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:59.