Up!, librería para subir archivos de forma oculta.
Ideal para CMSs, este script os puede ayudar a hacer varios uploads sin tener que recargar la página. Aparte, os dejará enviar un formulario de la misma forma.
JavaScript:
-
up={
-
load:function(formulari,callBack){
-
var frame=up.creaFrame();
-
document[formulari].target=frame;
-
document.getElementById(frame).onComplete=callBack;
-
document[formulari].submit();
-
},
-
creaFrame:function(){
-
var frame='f'+Math.floor(Math.random()*99999);
-
var d=document.createElement('DIV');
-
d.innerHTML='<iframe style="display:none" src="about:blank" id="'+frame+'" name="'+frame+'" onload="up.loaded(\''+frame+'\')"></iframe>';
-
document.body.appendChild(d);
-
return frame;
-
},
-
loaded:function(id){
-
var frame=document.getElementById(id);
-
if (frame.contentDocument){var d = frame.contentDocument;
-
}else if (frame.contentWindow){var d = frame.contentWindow.document;
-
}else{var d = window.frames[id].document;}
-
if(d.location.href=="about:blank"){return;}
-
if(typeof(frame.onComplete)=='function'){frame.onComplete(d.body.innerHTML);}
-
}
-
};
Está basado en un script que encontró Santi (un compañero de CDmon) y lo modifiqué para minimizar el peso y para obtener el resultado que yo quería (basicamente pulí toda la paja y ahora sólo lanza el callBack cuando ha terminado de cargar el archivo).
Os dejo un ejemplo de uso:
JavaScript:
-
<script type="text/javascript">
-
function cons_upload_arxiu(){
-
dup=document.cons_upload;
-
if(dup.arxiu.value==""){alert("Falta seleccionar un arxiu!!");return false;}
-
var id = d("cons_referencia").value;
-
-
dup.id.value=id;
-
-
up.load("cons_upload",cons_ok_upload);
-
return false; //para que no envíe el formulario en la página principal
-
}
-
function cons_ok_upload(retorno){
-
alert(retorno);
-
}
-
</script>
HTML:
El archivo cons_detall.php es el que procesa la subida del archivo.
Espero que os sea útil! :)



Comentarios
Te odio… la semana pasada estuve haciendo casi lo mismo… ¿porque no publicaste esto antes?? :D:D
Lo que hice yo fue poner en el form un target=iframe, para subir el archivo y no recargar la pagina. Pero veo que tu codigo lo hace de otra manera. Habrá que probarlo.
jeje, lo siento Jose, recuperé este código el viernes retocando un panel interno.
Estuve probando el codigo, creo que te has dejado algo de una de estas librerias prototype (lo digo por el “.onComplete”, que no he encontrado eso en los eventos Javascript.
Y un par de cosas que no me funcionaron, y como no entendía porque, pero si lo que querías hacer, lo modifiqué… de todos modos voy a mirar de nuevo, seguro que la culpa es mia porque apenas estoy con JS.
Um… veamos, el onComplete lo defines tu y se lanza cuando se ha completado la carga del archivo, es por eso que hay onComplete, es como si le quiero llamar “alFinalizar” o cualquier nombre.
¿Si no te funciona, porque no montas un ejemplo, me pasas la URL y así lo reviso? :)
Magnifica función! Me ha funcionado a la primera,
con solo cambiar el nombre de las funciones.
Muchas gracias! Magnifico trabajo!
Suerte!
Deja un comentario