Foros del Web » Programando para Internet » Javascript »

subir varios archivos con XMLHttpRequest y php

Estas en el tema de subir varios archivos con XMLHttpRequest y php en el foro de Javascript en Foros del Web. tengo un script que manda los archivos por el XMLHttpRequest a php: Código: $(document).ready(function(){ $("#btn").click(function(){ //aqui quedó fileField = document.getElementById("input_file"); var allowedTypes = ['png', 'jpg', ...
  #1 (permalink)  
Antiguo 23/03/2013, 20:23
 
Fecha de Ingreso: octubre-2011
Ubicación: Tierra
Mensajes: 64
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación subir varios archivos con XMLHttpRequest y php

tengo un script que manda los archivos por el XMLHttpRequest a php:
Código:
$(document).ready(function(){
	$("#btn").click(function(){
		//aqui quedó
				fileField = document.getElementById("input_file");

        		var allowedTypes = ['png', 'jpg', 'jpeg', 'exe', 'rar', 'gif'];   
				var filesLen = fileField.files.length;
				var fileInput = document.querySelector('#input_file');

				for (i = 0; i < filesLen; i++)
				{
				    var vidType = fileField.files[i].name.split('.');

				    if (allowedTypes.indexOf(vidType[vidType.length -1].toLowerCase()) != -1)
				    {
				        var progress = 'progress' + i;

				        $('input').before('<p>' + fileField.files[i].name + ' <progress id="' + progress + '"></progress></p>');

				        var xhr = new XMLHttpRequest();

				        xhr.open('POST', 'prueba.php',true);

				      (function(progress) { 
						    xhr.upload.onprogress = function(e) 
						    {
						        $('#' + progress).attr('value', e.loaded);
						        $('#' + progress).attr('max', e.total);
						    };
						}(progress));

				        xhr.onload = function()
				        {
				            $('#response').html(xhr.response);
				        };

				        var form = new FormData();
				        form.append('title', fileField.files[i].name);
				        form.append('film', fileInput.files[i]);
				        xhr.setRequestHeader("X-FILENAME", fileField.files[i].name);
				        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    					xhr.setRequestHeader("Content-length", fileField.files[i].length);

				        xhr.send(form);

				    }

				    else
				    {
				        alert('Your file "' + fileField.files[i].name + '" \'s format isn\'t supported');    
				    }
				}
        });
    });
y el archivo prueba.php
Código:
<?php
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
if ($fn) {
	// AJAX call
	file_put_contents(
		'uploads/' . $fn,
		file_get_contents('php://input')
	);
	echo "$fn se ha subido";
	exit();
}



?>
EL PROBLEMA ES QUE ME CREA LOS ARCHIVOS EN AL CARPETA DE DESTINO PERO ME LOS CREA VACIOS! NO SE PORQUE LO HACE SI LOS PARAMETROS SE ENVIARON BIEN
  #2 (permalink)  
Antiguo 24/03/2013, 00:37
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: subir varios archivos con XMLHttpRequest y php

Hola:

Siempre he subido archivos simulando ajax mediante un iframe oculto (o no) y enviando el form con un submit... no sé si todos los navegadores permiten hacerlo de otra manera, pero si con tu código piensas que puedes hacerlo, al menos supongo que el enctype debería ser multipart/form-data...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 24/03/2013, 07:14
 
Fecha de Ingreso: octubre-2011
Ubicación: Tierra
Mensajes: 64
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: subir varios archivos con XMLHttpRequest y php

te hago una pregunta tu procedimiento hace que recargue la pagina? lo que pasa es que este codigo lo hace asincronamente!

efectivamente a mi formulario le faltaba enctype="multipart/form-data", pero aun hací envia los archivos sin contenido, osea los crea con nombre y todo pero de tamaña 0 bytes! no se si puedas mirar mi codigo, la verdad creo que esta bien la enviadad de file multiple a php.

me interesaria hacer el procedimiento que me dice con iframe oculto y ajax, me puede dar un link de dicho proceso?

Última edición por juanvc123; 24/03/2013 a las 07:18 Razón: complementar
  #4 (permalink)  
Antiguo 24/03/2013, 08:30
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: subir varios archivos con XMLHttpRequest y php

aca tienes un links, si buscas en internet encontraras mucha info

http://viralpatel.net/blogs/ajax-sty...hidden-iframe/
http://joekuan.wordpress.com/2009/06...-using-iframe/
http://www.openjs.com/articles/ajax/ajax_file_upload/
  #5 (permalink)  
Antiguo 24/03/2013, 10:43
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: subir varios archivos con XMLHttpRequest y php

Cita:
Iniciado por juanvc123 Ver Mensaje
te hago una pregunta tu procedimiento hace que recargue la pagina? lo que pasa es que este codigo lo hace asincronamente!

efectivamente a mi formulario le faltaba enctype="multipart/form-data", pero aun hací envia los archivos sin contenido, osea los crea con nombre y todo pero de tamaña 0 bytes! no se si puedas mirar mi codigo, la verdad creo que esta bien la enviadad de file multiple a php.

me interesaria hacer el procedimiento que me dice con iframe oculto y ajax, me puede dar un link de dicho proceso?
No, si el target del submit del form es justamente el iframe. Incluso podrías actualizar algún elemento de la página principal generando una script de js trás la subida del archivo que llame una función en el parent
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 24/03/2013, 13:21
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: subir varios archivos con XMLHttpRequest y php

Hola:

Una referencia mía: Revisar las imágenes antes de subirlas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: html, jquery-ajax, php
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 17:48.