Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/01/2013, 18:13
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Previsualizar imagen cargado con un type="file"

Probá de no usar jQuery

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>HTML5 FileReader</title>
  5. </head>
  6. <form action="#" method="post" id="subearchivos">
  7.     <input type="file" id="archivos" name="archivos" />
  8.     <div id="vista_previa"><!-- miniatura -->Vista previa</div>
  9.     <input type="submit" id="enviar" name="enviar" />
  10.         <input type="button" value="cancelar"  style="display: none;" onclick="cancela('subearchivos');" id="resetear" />
  11. </form>
  12.     <script>
  13.     if (window.FileReader) {
  14.       function seleccionArchivo(evt) {
  15.         var files = evt.target.files;
  16.         var f = files[0];
  17.         var leerArchivo = new FileReader();
  18.         document.getElementById('resetear').style.display= 'block';
  19.           leerArchivo.onload = (function(elArchivo) {
  20.             return function(e) {
  21.               document.getElementById('vista_previa').innerHTML = '<img src="'+ e.target.result +'" alt="" width="250" />';
  22.             };
  23.           })(f);
  24.    
  25.           leerArchivo.readAsDataURL(f);
  26.       }
  27.      } else {
  28.       document.getElementById('vista_previa').innerHTML = "El navegador no soporta vista previa";
  29.     }
  30.    
  31.       document.getElementById('archivos').addEventListener('change', seleccionArchivo, false);
  32.      
  33.       function cancela(elForm){
  34. document.getElementById(elForm).reset();
  35. if (window.FileReader) {
  36. document.getElementById('vista_previa').innerHTML = "Vista Previa";
  37. }else{
  38. document.getElementById('vista_previa').innerHTML = "El navegador no soporta vista previa";
  39. }
  40.         document.getElementById('resetear').style.display= 'none';
  41.       }
  42.     </script>
  43.    
  44.  </body>
  45. </html>

El mensaje vista previa bien puede ser una imagen.
El problema con esta api sigue siendo la compatibilidad, IE9 y Safari no la soportan, para algo 100% compatible necesitas subir la imagen al server y mostrarla, por ejemplo en un iframe oculto
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.