Foros del Web » Programando para Internet » Node.js »

Problema con cloneNode y un file en explorer

Estas en el tema de Problema con cloneNode y un file en explorer en el foro de Node.js en Foros del Web. Hola a todos. Tengo el siguiente problema: Tengo un formulario que se genera dinamicamente, según el número de registros de una BD. Por cada registro ...
  #1 (permalink)  
Antiguo 31/07/2008, 11:06
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema con cloneNode y un file en explorer

Hola a todos.
Tengo el siguiente problema:

Tengo un formulario que se genera dinamicamente, según el número de registros de una BD. Por cada registro se agrega al formulario un text, un file y un textarea. El problema surge ya que el número de registro puede variar de 10 a 60 según sea el caso, por lo que la carga del servidor sería mucha si envío 60 etiquetas tipo file.
La solución mas evidente es hacerlo tipo Gmail, cada vez que se seleccione el archivo enviarlo y luego cuando llene todo los demás campos envíe solo los text y los textarea para alivianar la carga.
Para esto implemente un código con un iframe y un formulario oculto. Cada vez que selecciono un file lo clono en el formulario oculto y lo envío con el target del iframe.
Todo bien hasta que lo probé en explorer, al clonar el objeto tipo file lo clona pero sin el path ingresado por el usuario.

EL código de abajo muestra un ejemplo del funcionamiento, el iframe y el segundo formulario no están ocultos para ver lo que sucede
Código:
<script>
function valida(i){
old=document.formu_b.archivo;
alert(old.value);
old_hidden=document.formu_b.archivo_nombre;
form_oculto=document.formu_b;
form_oculto.removeChild(old);
form_oculto.removeChild(old_hidden);
old_f=document.getElementById("archivo_"+i);
nomFile=old_f.name;
new_f=old_f.cloneNode(true);
new_f.name="archivo";
new_f.id="archivo";	    
new_f_hidden=document.createElement("input");
new_f_hidden.type="hidden";
new_f_hidden.name="archivo_nombre";
new_f_hidden.id="archivo_nombre";
new_f_hidden.value=nomFile;
document.getElementById('b_b').appendChild(new_f_hidden);
document.getElementById('b_b').appendChild(new_f);
document.getElementById('b_b').action = "sube.php";
document.getElementById('b_b').target = "frameSend";
document.getElementById('b_b').submit();
}
</script>
<form name="a" method="post" enctype="multipart/form-data" action="ver.php">

<textarea name="mensaje" style="width: 80%; height: 100px">comentarios</textarea><br>
Archivo 1:
<input type="file" name="archivo_1_1_1" id="archivo_1" size="40" class="campoArchivo" onchange="valida(1)" />
<br>
Archivo 2:
<input type="file" name="archivo_2_hola" id="archivo_2" size="40" class="campoArchivo" onchange="valida(2)" />
 <input type="submit" value="enviar" name="fffff"/>
<input type="hidden" name="hd" id="hd" />
</form>

<iframe   name="frameSend" style="display: block; margin: auto; border-width: 2px; width: 200px; height: 200px;">
</iframe>
<form name="formu_b" id="b_b" method="post" enctype="multipart/form-data"  >
	<input type="file" name="archivo" id="archivo" size="26" class="campoArchivo" />
	<input type="hidden" name="archivo_nombre" id="archivo_nombre" value="nombre_fa" />
</form>
ojalá me puedan ayudar a encontrar una manera de clonar un campo tipo file con el contenido, o enviar solo un campo de un formulario y no todos.
  #2 (permalink)  
Antiguo 31/07/2008, 13:04
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con cloneNode y un file en explorer

Podrías hacerlo sin clonar el file, igual que lo hace Google.

Lo que se hace realmente es:
1. Se envía el formulario del file con un frame oculto como target. Cuando se recibe la respuesta en el frame oculto, se destruye el campo file original, se añade el checkbox [ ] y el nombre del fichero, y se añade debajo un nuevo campo file vacío. Pero no hay necesidad de clonar el campo ni el formulario.
  #3 (permalink)  
Antiguo 31/07/2008, 23:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Problema con cloneNode y un file en explorer

Gracias por la respuesta.

Voy a probar esto:
Agregar un formulario por cada campo de tipo file, dentro del formulario padre que envía todos los de mas campos que no son file. Después de subir cada file destruyo el objeto formulario que contiene el file y además destruyo el file. Finalmente cuando el usuario quera enviar el formulario padre solo enviará los campos de tipo text y textarea ya que los de tipo file se fueron destruyendo cada vez que se subía un archivo.
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 09:50.