Foros del Web » Programando para Internet » PHP »

Problema al subir archivos

Estas en el tema de Problema al subir archivos en el foro de PHP en Foros del Web. Buenos días a todos, Antes de nada, disculpad si el foro para postearlo no es correcto, pero creo que mi problema esta en PHP. Tengo ...
  #1 (permalink)  
Antiguo 02/02/2013, 03:43
 
Fecha de Ingreso: noviembre-2012
Ubicación: Vigo
Mensajes: 9
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Problema al subir archivos

Buenos días a todos,

Antes de nada, disculpad si el foro para postearlo no es correcto, pero creo que mi problema esta en PHP.

Tengo un pequeño problema a la hora de subir archivos al FTP mediante PHP.

Os comento:

Tengo una aplicación donde un usuario sube uno o varios archivos a través de un input file.

Habitualmente cuando el usuario envia el formulario, el archivo/s se envian correctamente y se suben al FTP sin ningun tipo de problema.

El caso, es que ocasionalmente, y ultimamente casi habitualmente, si un usuario sube varios archivos por ejemplo 4, se suben 3 de los 4 archivos, y el otro se sube pero sin tamaño. Es decir que no sube 1 de los ficheros.

Nunca es el primero el que falla ni el ultimo, el archivo que falla puede ser cualquiera de los 4.

Espero que me podais ayudar.

Un saludo
  #2 (permalink)  
Antiguo 02/02/2013, 04:30
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Problema al subir archivos

...pues me da que tienes problemas de peso en cada archivo, lo que te recomiendo es que siempre que se suban archivos, limita la extensiones, limita el peso, y limita la cantidad de uploads simultaneos...

...te paso unos links que te ayudaran a implementar..

http://www.forosdelweb.com/f18/limit...upload-468997/
http://www.forosdelweb.com/f18/limit...-suban-446940/
http://www.forosdelweb.com/f18/limit...ulario-854883/
  #3 (permalink)  
Antiguo 02/02/2013, 05:00
 
Fecha de Ingreso: noviembre-2012
Ubicación: Vigo
Mensajes: 9
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema al subir archivos

Hola Ipraetoriux,

De lo que me comentas, tengo todo validado. Tanto el peso de cada archivo, como las extesiones y la cantidad de archivos simultaneos.

El caso por lo que he ido comprobando, a veces el fichero que falla puede pesar 1 mega, 100k o cualquier otro tamaño, asi que descarte que el error fuese de tamaño ( Pedia al usuario que me reenviase el fichero a traves de Filezilla y comprobando el tamaño )

En cuanto a las extesiones solo permito JPG y PDF. Llegue a pensar un dia que podia ser por el nombre que tiene el usuario en el archivo, pero ahora los renombro cuando se suben y asi evito el posible problema de longitud de nombre.

Te muestro el codigo que tengo por que a lo mejor soy yo que me paso algo.
* Alguna de las validaciones se hacen a través de Javascript ( en este caso la validacion del tipo de archivo la valido con javascript y php

Código:
if(isset($_FILES['archivo']))
{
	foreach ($_FILES['archivo']['error'] as $key => $error) 
	{
		 $tipo = $_FILES['archivo']['type'][$key];
		 $contador = $contador + 1;
		 if($contador == 1)
		 {
			 $archivo_antiguo = $_FILES['archivo']['name'][$key];
		 }
		 if($contador != 1)
		 {
			 $archivo_antiguo .= " - " . $_FILES['archivo']['name'][$key];
		 }
				
		 if(strpos($tipo,"jpg") || strpos($tipo,"jpeg") || strpos($tipo,"JPG") || strpos($tipo,"JPEG"))
		 {
			 $archivo = $contador."_".$prefijo.".jpg";
		 }
		 if(strpos($tipo,"pdf"))
		 {
			 $archivo = $contador."_".$prefijo.".pdf";
		 }

		 if($contador == 1)
		 {
			$ficheros .= $archivo;
		 }
		 else
		 {
			 $ficheros .= " - " . $archivo ;
		 }
		 
		 if($error == UPLOAD_ERR_OK) // Compruebo si hay algun tipo de error
		 {
			 if(is_uploaded_file($_FILES["archivo"]["tmp_name"][$key]))
			 {
			          if(!move_uploaded_file($_FILES["archivo"]["tmp_name"][$key],$destino.$archivo))
				  {
				                header('location: direccion.php?op=3');
				  }
			}
			else
			{
				 header('location: direccion.php?op=3');
			}
		}
		else
		{
			 $ferror=fopen("files/".$_SESSION['s_username']. "/" .$prefijo."/errores.txt","a") or die("<script>jAlert('Error en la creación de resumen','Error fichero')</script>");
			 fputs($ferror,"\n --------------- Errores Fichero ---------------");
			 if(sizeof($_FILES['archivo']['name']) != $contador)
			{
				 if($error == UPLOAD_ERR_NO_FILE) // Si no se ha subido ningun tipo de fichero
				 {
					fputs($ferror,"\nFallo en la subida: No se ha subido el fichero: $contador - ". $_FILES['archivo']['tmp_name'][$key]." ");
				 }
				 if($error == UPLOAD_ERR_FORM_SIZE) // Si sobrepasa el tamaño especificado en el input de formulario
				 {
					fputs($ferror,"\nFallo en el tamaño: No se ha subido el fichero. $contador - ". $_FILES['archivo']['tmp_name'][$key]);
				 }
				 if($error == UPLOAD_ERR_PARTIAL) // Solo se subio parcialmente el fichero
				 {
					 fputs($ferror,"\nFallo en la subida 2: Se ha subido parcialmente el fichero. $contador - ". $_FILES['archivo']['tmp_name'][$key]);
				 }
				 if($error == UPLOAD_ERR_CANT_WRITE) // No se pudo escribir el archivo en disco
				 {
					 fputs($error,"\nFallo en la escritura: No se ha podido escribir el archivo en disco. $contador - ". $_FILES['archivo']['tmp_name'][$key]);
				 }
				 if($error == UPLOAD_ERR_INI_SIZE) // El tamaño supera al tamaño asignado en php.ini
				 {
					 fputs($ferror,"\nFallo en el tamaño: No se ha subido el fichero PHP.ini $contador - ". $_FILES['archivo']['tmp_name'][$key]);
				 }
			 }
			 fclose($ferror);
			 header('location: direccion.php?op=3');
 	            }
	} // End foreach
}
else
{
			header('location: direccion.php?op=3');
}
En cuanto a la modificacion del php.ini para el tiempo de ejecuccion de scripts y demás esta todo modificado y aumentado.

El caso es que al ser un error ocasional no entiendo el por que puede estar pasando.

Ultimamente me ronda por la cabeza que pueda ser un problema de conexion del usuario que al sufrir algun tipo de corte en su conexion haga que el archivo que se estaba subiendo en ese momento se corte y suba despues los demas.

Espero que me puedas ayudar o por lo menos si tienes alguna idea por donde puede ir encaminado el problema.

Un saludo y gracias de nuevo

Etiquetas: 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 04:01.