Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Subir archivos múltiples en un formulario con Uploadify

Estas en el tema de Subir archivos múltiples en un formulario con Uploadify en el foro de Frameworks JS en Foros del Web. Hola amigos de Foros del Web! En esta ocasión quiero pedirles ayuda con 3 problemas que tengo en un formulario en donde el usuario puede ...
  #1 (permalink)  
Antiguo 22/09/2011, 08:20
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 12 años, 9 meses
Puntos: 11
Pregunta Subir archivos múltiples en un formulario con Uploadify

Hola amigos de Foros del Web!
En esta ocasión quiero pedirles ayuda con 3 problemas que tengo en un formulario en donde el usuario puede ingresar datos como nombres, apellidos, etc. y otra cosa es que pueden adjuntar varios documentos (en total 5 archivos adjuntos). Lo de adjuntar archivos he decidido hacerlo con uploadify.

Esto es lo que tengo:

Código HTML:
<form id="form1" name="form1" action="" method="post">
<!--Aca pido los datos personales del usuario -->
	Curr&iacute;culo<br>
	<input id="file_upload" class="required" name="curriculo" type="file"><br>
	Fondo Negro del T&iacute;tulo de Pre-grado	<br>
	<input id="file_upload2" class="required" name="curriculo" type="file"><br>
	<div class="buttonSubmit">
		<span></span>
			<input class="formButton" onclick="$('#file_upload').uploadifyUpload()" type="submit" value="Enviar" style="width: 140px" tabindex="14" >
	</div>

</form> 
Aca es donde comienzan los problemas, fijense que tengo 2 botones aparte para que el usuario suba los documentos, mi primer problema es que necesito que los botones este asi, uno aparte del otro, para no confundir al usuario seleccionando los archivos todos de una vez.
hasta ahora encontre una solucion temporal con lo siguiente:

Código HTML:
  $(document).ready(function() {
  var ruta;
  $('#file_upload').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/especializacion/archivos_usuarios',
	'buttonText': 'Seleccionar',
    'auto'      : false,
	'onAllComplete' : function(event,data) {
	  $('#file_upload2').uploadifyUpload();
    }
  });
    $('#file_upload2').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/especializacion/archivos_usuarios',
	'buttonText': 'Seleccionar',
    'auto'      : false,
	'onAllComplete' : function(event,data) {
     document.getElementByID('someForm').submit();
    }
  });
});
Aca es donde me atrapa el segundo problema... ¿Con esto asi como hago para procesar los datos personales de los usuarios para almacenarlos en una base de datos?
Y el tercer problema (el peor creo) es que necesito almacenar tambien la direccion de los documentos que adjuntan los usuarios ¿como hago para recuperar la direccion del documento ya subido para almacenarla en la base de datos?
revise aqui: http://www.forosdelweb.com/f127/poco-luz-con-uploadify-921974/ y es una gran solucion a este ultimo problema, pero solo se recupera el nombre del ultimo documento (en mi caso). Y lo que empeora todo es que, para que al subir
los archivos no se sustituyan los que tengan el mismo nombre, cambie en el archivo uploadify.php lo siguiente (agrege un numero aleatorio al comienzo del nombre del archivo):

Código PHP:
...
$tempFile $_FILES['Filedata']['tmp_name'];
    
$targetPath $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    
//Agrego un prefijo al nombre para evitar duplicados
    
$name substr(md5(uniqid(rand())),0,6);
    
$name $name "_" $_FILES['Filedata']['name'];
.... 
¿Alguien puede ayudarme con algo? please
de antemano, 10000000 gracias!!!
  #2 (permalink)  
Antiguo 22/09/2011, 10:14
Avatar de livemusic  
Fecha de Ingreso: abril-2011
Ubicación: Lima - Chorrillos
Mensajes: 150
Antigüedad: 13 años
Puntos: 18
Sonrisa Respuesta: Subir archivos múltiples en un formulario con Uploadify

jajajaj pase por lo mismo y llegue a desarrollar esto espero y te ayude.


/*****************************/

Solucion...

1. - Evitar la duplicidad de codigo, para esto creo un funcion la cual envio valores a usar ...

-------------> upload(idUpload, ruta, multi, idProyect, imgType, returnVal, prvFile)

2.- Para procesar los datos personales, lo puedes hacer en el submit del formulario.

3.- Evitar que los archivos se repitan activa la opcion checkScript del uploadify ...


Código Javascript:
Ver original
  1. $(function({
  2. upload('file_upload', nameFolder, true, idProyect, 'G', '', '');
  3. upload('pq1_pro', nameFolder, false, idProyect, 'M', 'file_min_proyect', 'prv_min_1');
  4. upload('pq2_pro', nameFolder, false, idProyect, 'M', 'file_min_proyect2', 'prv_min_2');
  5. }))

/************************************************** *******/
Código Javascript:
Ver original
  1. function upload(idUpload, ruta, multi, idProyect, imgType, returnVal, prvFile){
  2.     $('#'+idUpload).uploadify({
  3.         'uploader'  : 'js/uploadify/uploadify.swf',
  4.         'script'    : 'js/uploadify/uploadify.php',
  5.         'cancelImg' : 'js/uploadify/cancel.png',
  6.         'folder'    : 'uploads/'+ruta+'/',
  7.         'buttonImg' : 'js/uploadify/icon_c07.gif',
  8.         'width'     : 30,
  9.         'height'    : 27,
  10.         'multi'     : multi,
  11.         'auto'      : true,
  12.         'onComplete': function(event, queueID, fileObj, response){
  13.             // G == Carga de Imagenes grandes
  14.             if(imgType == "G"){
  15.                 $.ajax({
  16.                     type: "GET",
  17.                     url: "ajax.php?pag=add",
  18.                     data: {imagen:fileObj.name, idProyect:idProyect},
  19.                     dataType: "html",
  20.                     success: function(msg){
  21.                         if(parseInt(msg)!=0){
  22.                             $('<li style="border: #000000 10px solid;"></li>').appendTo('#uploadImg').html('<img src="uploads/'+ruta+'/'+fileObj.name+'" />');
  23.                         }
  24.                     }
  25.                 })
  26.                 listImages(idProyect);
  27.             }
  28.             // M carga de Imagenes pequeñas
  29.             else if(imgType == "M"){
  30.                 // Enviamos el Nombre del Archivo
  31.                 $("#"+returnVal).val(fileObj.name);
  32.                 $("#"+idUpload).hide();
  33.                 // Escondemos el input File..
  34.                 $("#"+prvFile).html('<img src="uploads/'+ruta+'/'+fileObj.name+'" class="prv_min_imge" />');
  35.             }
  36.         }
  37.     });
  38. }


/***********************************/
Saludos suerte .... ¡¡
  #3 (permalink)  
Antiguo 25/09/2011, 16:32
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 12 años, 9 meses
Puntos: 11
Respuesta: Subir archivos múltiples en un formulario con Uploadify

Muchas gracias por tu respuesta! lo intentare y dire que tal me fue
  #4 (permalink)  
Antiguo 17/02/2012, 17:46
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Subir archivos múltiples en un formulario con Uploadify

y que tal te fue neglivv ????

Yo ando en las mismas, la verdad perdida :S

Tenia mi funcion ajax con la que pasaba las variables a mi php donde las insertaba a la bd, pero al quererle agregar la posibilidad de subir imagenes no pude combinar mi codigo ajax con el del uploadify, entonces decidi hacerlo solo con el de uploadify, pero no doy una

Actualmente lo estoy implementando muy sencillo solo para que funcione, tengo el codigo donde pido las variables:

Código HTML:
$(document).ready(function() {
  $('#file_upload').uploadify({
    'uploader'  : '../images/uploadify.swf',
	'buttonText'  :'Examinar...',
	'cancelImg' : '../images/cancel.png',
    'script'    : 'upload/uploadify.php',
	'scriptData'  : {'nombre':$('#autor_opinion').val()},
    'folder'    : '../images/uploads',
    'auto'      : false,
	'fileDesc'    : 'Tipo de imágenes permitidas (.JPG, .GIF, .PNG)',
	'fileExt'     : '*.jpg;*.jpeg;*.gif;*.png',
	'sizeLimit'   : 2097152, 
	'multi'       : true
  });
});
// ]]>
</script>
</head>
<body>
<div id="form_opinion">
	<input id="file_upload" type="file" name="file_upload" />
	<br />
	nombre <input type="text" id="autor_opinion" /><div id="error_autor_op"></div>
	<br />
	<input type="button" value="Enviar" onclick="$('#file_upload').uploadifyUpload()" />
</div>
<div id="status"></div> 
el uploadify js es la version actual (v2.1.4)

y el php uploadify.php es:

Código PHP:
<?php
include('../../conexion_mysql/conecta_db.php'); 
$conn_mysql conecta_db(); //la conexion a la bd

$nombre=$_POST['nombre']; //recibo variable, aunque en realidad no se si la este recibiendo realmente
//echo "Nombre: ".$nombre; el echo ni lo imprime por eso lo comente

$sql_insert="Insert into tabla (nombre) values ('$nombre')"//obviamente serian mas variables para insertar,ahora solo pruebo con una
mysql_query($sql_insert) or die('Error en la inserci&oacuten: '.mysql_error());
echo 
"OK";

if (!empty(
$_FILES)) {
    
$tempFile $_FILES['Filedata']['tmp_name'];
    
$targetPath $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    
$targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
    
        
move_uploaded_file($tempFile,$targetFile);
        echo 
str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
        
}
?>
si se inserta un nuevo registro pero no inserta nada en el campo nombre, es decir que la variable no esta llegando, (ya cheque normal la insercion y funciono osea que no hay error en el codigo de insersion)

lo que me gustaria es poder tomar las variables, validarlas y mandarlas al php para su insercion al bd

Como podría manipular el archivo uploadify.js para lograr eso??

Gracias de antemano

Última edición por catpaw; 17/02/2012 a las 18:14
  #5 (permalink)  
Antiguo 17/02/2012, 18:15
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Subir archivos múltiples en un formulario con Uploadify

Agregue esto a la funcion onComplete en el uploadify js:

onComplete : function(event, queueID, fileObj, response, data){ $('#status').append(response); },

y me manda el mismo error por cada imagen que subo, es decir, si subo 3 imagenes me dice tres veces:

Notice: Undefined index: nombre in C:ruta on line 29 (esa linea tiene $nombre=$_POST['nombre']; )
OKuploadify/images/uploads/Koala.jpg

Que esta pasando? si la variable no llega, pero que se debe hacer para que llegue?

No esta funcionando entonces esta linea :

'scriptData' : {'nombre':$('#autor_opinion').val()},

Etiquetas: formulario, uploadify
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 01:06.