Quiero poder obtener una vista previa de un archivo (imagen) antes de que se cargue. La acción de vista previa debe ejecutarse todo en el navegador sin usar Ajax para cargar la imagen.
¿Cómo puedo hacer esto?
javascript
jquery
file-upload
Simbian
fuente
fuente
Respuestas:
Eche un vistazo al código de muestra a continuación:
Además, puedes probar esta muestra aquí .
fuente
document.getElementById('blah').src=e.target.result)
input.files[0]
como datos, consulte el documento de jQuery .input.files[0]
no tiene la ruta completa. ¿Cómo ubica FileReader el archivo?Hay un par de formas en que puedes hacer esto. La forma más eficiente sería usar URL.createObjectURL () en el archivo desde su <input> . Pase esta URL a img.src para indicarle al navegador que cargue la imagen proporcionada.
Aquí hay un ejemplo:
También puede usar FileReader.readAsDataURL () para analizar el archivo desde su <input>. Esto creará una cadena en la memoria que contiene una representación base64 de la imagen.
fuente
URL.revokeObjectURL
cuando haya terminado con su blobSolución de una línea:
El siguiente código usa URL de objeto, que es mucho más eficiente que la URL de datos para ver imágenes grandes (una URL de datos es una cadena enorme que contiene todos los datos del archivo, mientras que una URL de objeto, es solo una cadena corta que hace referencia a los datos del archivo memoria):
La URL generada será como:
fuente
FileReader
,input.files
etc.)URL.createObjectURL
es el camino a seguir cuando se trata de archivos enviados por el usuario, solo crea un enlace simbólico en memoria al archivo real en el disco del usuario.La respuesta de LeassTaTT funciona bien en navegadores "estándar" como FF y Chrome. La solución para IE existe pero se ve diferente. Aquí la descripción de la solución de navegador cruzado:
En HTML necesitamos dos elementos de vista previa,
img
para navegadores estándar ydiv
para IEHTML:
En CSS especificamos la siguiente cosa específica de IE:
CSS:
En HTML incluimos el estándar y los javascripts específicos de IE:
El
pic_preview.js
es el Javascript de la respuesta de LeassTaTT. Reemplace el$('#blah')
con el$('#preview')
y agregue el$('#preview').show()
Ahora el Javascript específico de IE (pic_preview_ie.js):
Esto es. Funciona en IE7, IE8, FF y Chrome. Por favor, pruebe en IE9 e informe. La idea de la vista previa de IE se encontró aquí: http://forums.asp.net/t/1320559.aspx
http://msdn.microsoft.com/en-us/library/ms532969(v=vs.85).aspx
fuente
He editado la respuesta de @ Ivan para mostrar la imagen "No hay vista previa disponible", si no es una imagen:
fuente
Aquí hay una versión de múltiples archivos , basada en la respuesta de Ivan Baev.
El HTML
JavaScript / jQuery
Requiere jQuery 1.8 debido al uso de $ .parseHTML, que debería ayudar con la mitigación de XSS.
Esto funcionará de inmediato, y la única dependencia que necesita es jQuery.
fuente
Si. Es posible.
HTML
JS
Puede obtener una demostración en vivo desde aquí.
fuente
JSfiddle limpio y simple
Esto será útil cuando desee que el evento se active indirectamente desde un div o un botón.
fuente
<label>
y evitar JavaScript para manejar el clic del botón por completo. Activar entrada de archivo con HTML / CSS puro. , y no es hacky en absoluto.Ejemplo con múltiples imágenes usando JavaScript (jQuery) y HTML5
JavaScript (jQuery)
Marcado (HTML)
fuente
¿Qué tal crear una función que cargue el archivo y active un evento personalizado? Luego adjunte un oyente a la entrada. De esta manera, tenemos más flexibilidad para usar el archivo, no solo para obtener una vista previa de las imágenes.
Probablemente mi código no sea tan bueno como el de algunos usuarios, pero creo que lo entenderás. Aquí puedes ver un ejemplo
fuente
El siguiente es el código de trabajo.
Javascript:
fuente
En React, si el archivo está en tus accesorios, puedes usar:
fuente
¿Qué hay de esta solución?
Simplemente agregue el atributo de datos "tipo de datos = editable" a una etiqueta de imagen como esta:
Y el guión de su proyecto, por supuesto ...
Ver demostración en JSFiddle
fuente
Prueba esto
fuente
Esto previsualizará múltiples archivos como imágenes en miniatura a la vez
HTML
Guión
Demostración de trabajo en Codepen
Demostración de trabajo en jsfiddle
Espero que esto sea de ayuda.
fuente
He creado un complemento que puede generar el efecto de vista previa en IE 7+ gracias a Internet, pero tiene pocas limitaciones. Lo puse en una página de Github para que sea más fácil obtenerlo
fuente
Para la carga de múltiples imágenes (modificación de la solución de @ IvanBaev)
http://jsfiddle.net/LvsYc/12330/
Espero que esto ayude a alguien.
fuente
Es mi código. Admite IE [6-9] 、 Chrome 17 + 、 Firefox 、 Opera 11 + 、 Maxthon3
fuente
Iamge predeterminado
fuente
Aquí hay una solución si está usando React:
fuente
Este es el método más simple para obtener una vista previa de la imagen antes de subirla al servidor desde el navegador sin usar Ajax ni ninguna función complicada. Necesita un evento "onchange" para cargar la imagen.
La imagen se cargará inmediatamente después de seleccionarla.
fuente
para mi aplicación, con parámetros de URL GET cifrados, solo esto funcionó. Siempre tengo un
TypeError: $(...) is null
. Tomado de https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURLfuente
HTML
Esto también maneja el caso cuando se elige un archivo con un tipo no válido (ej. Pdf)
fuente