Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/02/2006, 03:00
Mitiro
 
Fecha de Ingreso: febrero-2006
Mensajes: 6
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias por tu respuestas e interés.

Supongo que a lo que te refieres del servidor HTTP que también interviene es lo siguiente:

<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 10240000 // PARA 10MB o +
</Files>

Lo puse en un .htaccess en la carpeta donde se ejecuta mi script PHP pero no funcionó. En la configuración de Apache, para todo el servidor, no figura ninguna línea LimitRequestBody y leí por ahí que si no existe es ilimitado.

En cuanto al espacio en el directorio temporal no creo que se trate de eso. Comentaba que hice la prueba de enviar en los 5 uploads que me permite el formulario un archivo de unos 150KB y, a veces fallaba en el cuarto (que se subía parcialmente) y otras veces en el tercero, pero siempre se subían al servidor, como mínimo dos (no falta espacio en la carpeta).

Si hago la prueba con archivos de 1,5MB subiéndolos 5 veces, sólo se sube el primero, al segundo NUNCA llego (nuevamente el error de que el segundo upload sólo se ha podido subir parcialmente).

La parte críticia del código que me comentas es la siguiente:

Código:
/*
$fitxer es un array con los nombres de los campos del formulario que son de tipo 'file'. Hago un recorrido por todos para subirlos al servidor y dejarlos en su carpeta correspondiente
*/

$numfitxer=1;
$numfitxersadjunts=0;
$numerror=0;
$nom_adjunt_retocat=array();
			
while ($fitxer[$numfitxer] != '') {
		
  $nomcamp=$fitxer[$numfitxer];
				
  if ($_FILES[$nomcamp]["name"] != '') {				
				
    $numfitxersadjunts++;
    $nom_adjunt_original[$numfitxer]=$_FILES[$nomcamp]["name"];
    $nom_adjunt_retocat[$numfitxer]=substr($_SESSION[$nom_del_script]["idint"]+1000,1)."_".date('Y').$_SESSION[$nom_del_script][$fitxer[$numfitxer]];

					
    $tipus_fitxer = $_FILES[$nomcamp]["type"]; 
    $tamany_fitxer = $_FILES[$nomcamp]["size"];
 
    if (!(de_los_formatos_de_archivo_permitidos)) && ($tamany_fitxer < 2097152))) { 

      @mysql_query("UPDATE ".$nom_del_script." SET error=1 WHERE id=".$_SESSION[$nom_del_script."_idsol"]);
					
      $_SESSION[$nom_del_script]["inssol"]="No";
      $_SESSION[$nom_del_script."_res"]=5;
      $_SESSION[$nom_del_script]["grec"]="sí";
      header("Location:".$path."/".$nom_del_script."/".$nom_del_script.".php");
						die();
					
    } else {
							
      if ( (move_uploaded_file ($_FILES[$nomcamp]["tmp_name"],directori_on_pujar.$nom_adjunt_retocat[$numfitxer])) ) {
					
        chmod(directori_on_pujar.$nom_adjunt_retocat[$numfitxer],0666);
						
      } else {
						
        $numerror++;
        $error[$numerror]="No hem pogut rebre el fitxer ".$nom_adjunt_original;
       /*
         Aquí es donde $_FILES[$nomcamp]["error"] toma el valor 3 (sólo se ha podido subir el fichero parcialmente). Este error lo da al tercer o cuarto fichero, depende de cómo le dé al servidor, cuando subo con el form 5 ficheros de 150KB cada uno y da el error al segundo fichero si decido subir, por ejemplo, 5 ficheros de 1,5MB
      */
						
      }
					
    }
					
  }
				
  $numfitxer++;
			
}

Ojalá detectéis el problema.

Muchas gracias por todo.