Foros del Web » Programando para Internet » PHP »

Problema con subida de ficheros

Estas en el tema de Problema con subida de ficheros en el foro de PHP en Foros del Web. Hola, tengo programada una subida de archivos mediante drag & drop (arrastrar y soltar). Todo funciona ok, cuando son ficheros pequeños. Cuando los ficheros son ...
  #1 (permalink)  
Antiguo 16/06/2012, 08:28
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Pregunta Problema con subida de ficheros

Hola, tengo programada una subida de archivos mediante drag & drop (arrastrar y soltar).

Todo funciona ok, cuando son ficheros pequeños. Cuando los ficheros son grandes, y terminan de subirse, me falla porque el script no encuentra otros parametros que estoy pamndando via POST adjuntos al fichero.

No se trata de un problema de memoria, puesto que subiendo desde un file chooser esos mismos ficheros funciona, no se a que se debe.

Aquí mi codigo (el fichero ya esta guardado en la variable this.file):

Código:
		req = new XMLHttpRequest();  
		req.open('POST', 'index.php?r=file/UploadFile', true); 	
		
		req.upload.addEventListener("progress", this.uploadProgress, false);  
		req.addEventListener("load", this.uploadComplete, false); 
		//req.onreadystatechange = this.uploadComplete;		
		req.addEventListener("error", this.uploadFailed, false);  
		req.addEventListener("abort", this.uploadCanceled, false);  
		
		var formData = new FormData();
		formData.append('parentIdFSS', this.folderId);
		formData.append('tags', this.tags);
		formData.append('file', this.file);

		req.send(formData);
En el servidor leo el parámetro tags, y en caso de ficheros grandes, este no está presente.... ¿A qué se puede deber?

Código PHP:
        if(isSet($_POST['tags'])) $tags $_POST['tags'];
        else if(isSet(
$_GET['tags'])) $tags $_GET['tags'];
        else return; 

Gracias!!!
  #2 (permalink)  
Antiguo 16/06/2012, 08:39
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Problema con subida de ficheros

No recuerdo como funcione el FormData pero si vas a enviar datos por POST debes agregar una cabezera de la siguiente manera antes del send().

Código Javascript:
Ver original
  1. req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

Haber si es eso, saludos!
  #3 (permalink)  
Antiguo 16/06/2012, 08:57
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Problema con subida de ficheros

Al poner esa cabecera me sale el siguiente error

"
Warning: Unknown: POST Content-Length of 408705470 bytes exceeds the limit of 134217728 bytes in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0"

La subida de ficheros mas grandes mediante formulario (con ayuda de un plugin, ya que para subirlo via ajax neceisto un plugin), da el mismo problema, no encuentra los parametros enviados, pero sin embargo, el script continua ejecuandose pese a que tengo un return, y el fichero se almacena correctamente, es muy raro esto :S.

Gracias por intentarlo!!
  #4 (permalink)  
Antiguo 16/06/2012, 10:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con subida de ficheros

Hola:

Supongo que estarás usando alguna librería, ya que con javascript no se puede subir archivos, salvo con el clásico submit() (puede que esté enmascarado)... de todos modos, para archivos grandes debes modificar parámetros php, ya sea añadiendo/modificando el php.ini, o con una instrucción ini_set (o algo así) en el fichero receptor... si quieres, podemos mover el tema a php...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 16/06/2012, 10:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Problema con subida de ficheros

Pues parace ser que si era un problema de memoria, pero es que en el caso de subida desde el selector de ficheros (con el plugin) se subia bien, aunque también fallaba a leer los parametros, estableciendo estas opciones funciona (me faltaba la última creo).


ini_set('memory_limit','1024M');
ini_set('post_max_size','1024M');
ini_set('upload_max_filesize','1024M');

Durante la subida de un fichero, ¿se consume tanta memoria RAM como tamaño tiene el fichero o se va volcando a disco? Es una cosa que me preocupa, gracias de nuevo.
  #6 (permalink)  
Antiguo 16/06/2012, 10:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Problema con subida de ficheros

Perdon, no vi tu respuesta, al parecer era algo asi, gracias! :)
  #7 (permalink)  
Antiguo 16/06/2012, 14:20
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Problema con subida de ficheros

Ha ya vez, el problema es con PHP ya que te está diciendo que superas la capacidad máxima para POST, como dices, estas lineas son la clave para solucionarlo:
Código PHP:
Ver original
  1. ini_set('memory_limit','1024M');
  2. ini_set('post_max_size','1024M');
  3. ini_set('upload_max_filesize','1024M');
Como veo el waning dice que la capacidad máxima establecida para POST es de 128MB y tu estás tratando de subir casi 390MB, así que poniendolo en 1024MB ya es suficiente para que funcione.

Javascript por su parte cumple con el envio de los archivos correctamente, sin embargo PHP es el que deniega descargar los datos y consumir recursos por que la configuracion .ini así lo manda, entonces hay que cambiar la configuración en tiempo de ejecución o en php.ini.

Saludos

Etiquetas: ficheros, funcion, 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 15:20.