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.