« glow de imágenes con css | Main | va de nuevo. »
September 16, 2004, 05:14 PM
Preview de Imágenes antes de subirlas.
Cuando se trabaja con forms en los cuales hay que subir imágenes, siempre es bueno tener un preview y así estar seguros de que realmente vamos a subir la imagen que queremos.
Este preview se puede hacer fácilmente utilizando para esto javascript.
Cómo?
Las imágenes tienen una propiedad llamada src (de source u origen), el truco aquí es detectar cuando el input del tipo file ( archivo ) cambie, tendrá el path a la imagen que queremos subir e invocará a la función javascript que cambia la propiedad src de la imagen, haciendo así la vista previa.La forma más sencilla es identificar a las partes que participan, así podremos acceder, cambiar su valores más fácilmente.
Actores
En este caso, ocuparemos 4 actores.1.el formulario
2.la imagen original
3.el input
4.el javascript.
El form
Si intentamos subir la imagen al servidor ( donde luego se procesara para ser gravada en ésteLa imagen
La imagen incial puede ser una que esté en el servidor, un spacer, o cualquier otra imagen; esta tiene un idenficador con el cual le podremos cambiar la propiedad src, para el ejemplo se llamará "picture". ( no vaya a ser que le pongan zapato, y luego no sepan a qué se refiere )El input
El input es del tipo file ( archivo ) y tiene por nombre imageField, aparte tiene el evento onChange donde llama al javascript.<input name="imageField" type="file" onChange="refreshImg()">
El javascript
El señor refreshImg (osea que ese es el nombre de la función pero se quiere hacer el importante),es el encargado de dos cosas1.buscar el valor del campo input (document.form1.imageField.value), y asignárselo a la propiedad src de la imagen con id "picture" (document.form1.picture.src).
La sopa
El ejemplo completo sería algo como este ( guardar como .html, como txt no funciona :P):<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Img Upload w/Preview</title> <style type="text/css"> <!-- input { margin-top:10px; display: block; text-align:center; } form{ text-align:center; width:400px; margin-left:auto; margin-right:auto; } --> </style> <script language="javascript"> function refreshImg(){ document.form1.picture.src = 'file:///'+ document.form1.imageField.value; } </script> </head> <body> <form name="form1" id="form1" action="" method="post" enctype="multipart/form-data" > <img src="../fotos/imagen.jpg" id="picture" alt="vista previa"/> <input name="imageField" type="file" onChange="refreshImg()"> </form> </body> </html>
Compatibilidad
Esto se probó usando firefox e internet bugsplorer, lamentablemente el señor netscape amaneció de malas y no quizo cooperarPosted by kada
Comentarios
2Freddie® , (September 16, 2004 10:52 PM):
Si, un tanto raro; pero vaya que puede ser util :D
3cvander , (September 16, 2004 11:29 PM):
Muy bonito y útil. Gracias por compartirlo.
4dago135 , (September 17, 2004 11:30 AM):
=) bien hecho kada! muy util la vdd!
saludos
5BeSLNeT , (September 19, 2004 01:26 AM):
Hola kada, oye está bueno el ejemplo pero tiene un error al menos a mí me marco el error en una linea de la función te mando el original y el corregido por mí, bueno no es gran cosa, pero por si acaso sirve mi humilde observación
Original:
document.picture.src = 'file:///'+ document.form1.imageField.value;
Corregido:
document.form1.picture.src = 'file:///'+ document.form1.imageField.value;
---------------
Linea 24
Saludos ;)
BeSLNeT
6kadazuro , (September 19, 2004 08:49 AM):
que raro, seguro lo cambié cuando lo estaba probanco con netscape, bueno de todas maneras, gracias por la correción BeSLNeT.=)
7dQ , (September 29, 2004 02:15 PM):
Hola maestro muy curioso esto que comentas !!! me fue de gran utilidad ya que lo implemente a un demo que estoy haciendo y en realidad es muy util.
mira aca el demo ya implementado !
http://www.darioquiroga.com.ar/clients/interPatagonia/app/index.php
ingresa en agregar foto !
8xleon , (October 20, 2004 04:10 PM):
Hola Kada, nunca he comentado aqui pero te he leido bastante, y tu libro (con granatta) me ayudó mucho. Se te ocurre cómo hacer esto mismo en flash ? Cómo hacer que flash muestre una foto del disco duro del cliente...


