Je souhaite pouvoir prévisualiser un fichier (image) avant son téléchargement. L'action de prévisualisation doit être exécutée dans le navigateur sans utiliser Ajax pour télécharger l'image.
Comment puis-je faire ceci?
javascript
jquery
file-upload
Simbian
la source
la source
Réponses:
Veuillez consulter l'exemple de code ci-dessous:
Vous pouvez également essayer cet exemple ici .
la source
document.getElementById('blah').src=e.target.result)
input.files[0]
tant que données, voir le doc de jQuery .input.files[0]
n'a pas le chemin complet. Comment FileReader trouve-t-il le fichier?Vous pouvez procéder de plusieurs manières. Le moyen le plus efficace serait d'utiliser URL.createObjectURL () sur le fichier à partir de votre <input> . Transmettez cette URL à img.src pour indiquer au navigateur de charger l'image fournie.
Voici un exemple:
Vous pouvez également utiliser FileReader.readAsDataURL () pour analyser le fichier à partir de votre <input>. Cela va créer une chaîne en mémoire contenant une représentation base64 de l'image.
la source
URL.revokeObjectURL
lorsque vous avez terminé avec votre blobSolution monocouche:
Le code suivant utilise des URL d'objet, qui est beaucoup plus efficace que l'URL de données pour afficher de grandes images (une URL de données est une énorme chaîne contenant toutes les données du fichier, tandis qu'une URL d'objet, n'est qu'une courte chaîne faisant référence aux données du fichier en Mémoire):
L'URL générée sera comme:
la source
FileReader
,input.files
etc.)URL.createObjectURL
est la voie à suivre pour traiter les fichiers soumis par l'utilisateur, il crée uniquement un lien symbolique en mémoire vers le fichier réel sur le disque de l'utilisateur.La réponse de LeassTaTT fonctionne bien dans les navigateurs "standard" comme FF et Chrome. La solution pour IE existe mais semble différente. Voici la description de la solution multi-navigateur:
En HTML, nous avons besoin de deux éléments de prévisualisation,
img
pour les navigateurs standard etdiv
pour IEHTML:
En CSS, nous spécifions la chose spécifique à IE suivante:
CSS:
En HTML, nous incluons les javascripts standard et spécifiques à IE:
C'est
pic_preview.js
le Javascript de la réponse du LeassTaTT. Remplacez le par$('#blah')
le$('#preview')
et ajoutez le$('#preview').show()
Maintenant, le Javascript spécifique à IE (pic_preview_ie.js):
C'est. Fonctionne dans IE7, IE8, FF et Chrome. Veuillez tester dans IE9 et signaler. L'idée de l'aperçu IE a été trouvée ici: http://forums.asp.net/t/1320559.aspx
http://msdn.microsoft.com/en-us/library/ms532969(v=vs.85).aspx
la source
J'ai modifié la réponse de @ Ivan pour afficher l'image "Aucun aperçu disponible", si ce n'est pas une image:
la source
Voici une version à fichiers multiples , basée sur la réponse d'Ivan Baev.
Le HTML
JavaScript / jQuery
Nécessite jQuery 1.8 en raison de l'utilisation de $ .parseHTML, ce qui devrait aider à l'atténuation XSS.
Cela fonctionnera hors de la boîte, et la seule dépendance dont vous avez besoin est jQuery.
la source
Oui. C'est possible.
Html
JS
Vous pouvez obtenir la démo en direct à partir d'ici.
la source
JSfiddle propre et simple
Cela sera utile lorsque vous souhaitez que l'événement soit déclenché indirectement à partir d'une div ou d'un bouton.
la source
<label>
et éviter le javascript pour gérer complètement le clic sur le bouton. Déclenchez la saisie de fichiers avec du HTML / CSS pur. , et ce n'est pas du tout hacky.Exemple avec plusieurs images en utilisant JavaScript (jQuery) et HTML5
JavaScript (jQuery)
Balisage (HTML)
la source
Que diriez-vous de créer une fonction qui charge le fichier et déclenche un événement personnalisé. Attachez ensuite un écouteur à l'entrée. De cette façon, nous avons plus de flexibilité pour utiliser le fichier, pas seulement pour prévisualiser les images.
Mon code n'est probablement pas aussi bon que certains utilisateurs, mais je pense que vous comprendrez tout. Ici vous pouvez voir un exemple
la source
Voici le code de travail.
Javascript:
la source
Dans React, si le fichier est dans vos accessoires, vous pouvez utiliser:
la source
Et cette solution?
Ajoutez simplement l'attribut de données "data-type = editable" à une balise d'image comme celle-ci:
Et le script de votre projet bien sûr ...
Voir la démo sur JSFiddle
la source
Essaye ça
la source
Cela prévisualisera plusieurs fichiers sous forme d'images miniatures à la fois
Html
Scénario
Démonstration de travail sur Codepen
Démonstration de travail sur jsfiddle
J'espère que cela vous aidera.
la source
J'ai créé un plugin qui peut générer l'effet de prévisualisation dans IE 7+ grâce à Internet, mais a peu de limitations. Je l'ai mis dans une page github pour qu'il soit plus facile de l'obtenir
la source
Pour le téléchargement d'images multiples (modification de la solution @ IvanBaev)
http://jsfiddle.net/LvsYc/12330/
J'espère que cela aide quelqu'un.
la source
C'est mon code.Support IE [6-9] 、 chrome 17 + 、 firefox 、 Opera 11 + 、 Maxthon3
la source
Iamge par défaut
la source
Voici une solution si vous utilisez React:
la source
Il s'agit de la méthode la plus simple pour prévisualiser l'image avant de la télécharger sur le serveur à partir du navigateur sans utiliser Ajax ni aucune fonction compliquée. Il a besoin d'un événement "onchange" pour charger l'image.
L'image sera immédiatement chargée après l'avoir sélectionnée.
la source
pour mon application, avec les paramètres d'URL GET chiffrés, seul cela a fonctionné. J'en ai toujours un
TypeError: $(...) is null
. Tiré de https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURLla source
HTML
Cela gère également la casse lorsque le fichier de type non valide (ex. Pdf) est choisi
la source