Maison > interface Web > Tutoriel H5 > le corps du texte

Plug-in de téléchargement d'images ImgUploadJS : utilisez l'API de fichier HTML5 pour implémenter le téléchargement de collage de capture d'écran et le téléchargement par glisser-déposer des compétences du didacticiel _html5

WBOY
Libérer: 2016-05-16 15:46:08
original
3545 Les gens l'ont consulté
1. Contexte et effets

Actuellement, les fichiers les plus téléchargés sur Internet sont des fichiers image, mais le téléchargement de captures d'écran d'images Web traditionnelles nécessite : Enregistrez la capture d'écran -> ; Enregistrez, puis cliquez sur Télécharger->Sélectionner le chemin->Télécharger->Insérer.
Le téléchargement de fichiers image nécessite également : sélectionnez le chemin, puis ->Télécharger->Insérer, les étapes sont compliquées et l'expérience Internet est reine. S'il prend en charge le téléchargement par collage de capture d'écran et le téléchargement par glisser-déposer, l'expérience le sera. être grandement amélioré.
Actuellement, Zhihu et Github prennent en charge ces deux fonctionnalités pour les navigateurs modernes. J'ai appris à les implémenter alors que je n'avais rien à faire. Aujourd'hui, je vais parler des fonctions implémentées par ce plug-in de 1 Ko, de la manière de l'utiliser et de ses principes. .
Jetez d'abord un œil à l'effet d'insertion :
Après avoir pris une capture d'écran, collez-la directement et téléchargez-la.

Faites glisser et déposez pour télécharger

réseau http


2. Exemple d'utilisation
Appel direct :
Code XML/HTMLCopier le contenu dans le presse-papiers
  1. <div id="boîte" style="largeur : 800px; hauteur : 400px; bordure : 1px solide;" contenteditable="true">div>
  2. <script type="texte/ javascript" src="UploadImage.js">script> 
  3. new UploadImage("box", "UploadHandler.ashx").upload(function (xhr) {//Rappel une fois le téléchargement terminé
  4. var img = nouveau Image();
  5. img.src = xhr.responseText;
  6. this.appendChild(img);
  7. });

AMD/CMD

Code XML/HTML
Copier le contenu dans le presse-papiers
  1. <div id="boîte"  style="largeur : 800px; hauteur : 400px; bordure : 1px solide;"  contenteditable="true">div>    
  2. <script type="texte/ javascript" src="require.js">script>    
  3. <script>    
  4. require(['UploadImage'], function (UploadImage) {    
  5. new UploadImage("box", "UploadHandler.ashx").upload(function (xhr) {//上传完成后的回调    
  6. var img = nouveau Image();    
  7. img.src = xhr.responseText;    
  8. this.appendChild(img);    
  9. });    
  10. })    
  11. script>   


三.浏览器支持
当前版本只支持以下,浏览器,后期可能会支持更多浏览器。
•IE11
•Chrome
•FireFox
•Safari(未测式,理论应该支持)
四.原理及源码
1.粘贴上传
处理目标容器(id)的paste事件,读取e.clipboardData中的数据,如果是图片进行以下处理:
H5 File API (FileReader)获取文件的base64代码,并构建FormData异步上传。
2. Utilisez FormData pour plus de détails. 以下是初版本代码,比较简单。不再赘述。
部份核心代码

Code XML/HTML
复制内容到剪贴板
  1. fonction UploadImage(id, url, clé)
  2. {
  3. this.element = document.getElementById(id);
  4. this.url = url; //Le chemin pour le traitement des images back-end
  5. this.imgKey = key || "PasteAreaImgKey" //Nom mentionné dans le backend
  6. }
  7. UploadImage.prototype.paste = fonction (rappel, formData)
  8. {
  9. var
  10. quece = ce ;
  11. this.element.addEventListener('paste', function (e) {//Gérer l'événement coller du conteneur cible (id)
  12. if (e.clipboardData && e.clipboardData.items[0].type.indexOf('image')
  13. > -1) {
  14. var
  15. que = ce,
  16. lecteur = nouveau FileReader();
  17. file
  18. = e.clipboardData.items[0].getAsFile();//Lire les données dans e.clipboardData : objet Blob
  19. reader.onload
  20. = function (e) { //Une fois la lecture du lecteur terminée, xhr est téléchargé var
  21. xhr
  22. = nouveau XMLHttpRequest(),
  23. fd
  24. = formData || (nouveau FormData());; xhr.open('POST', thatthat.url, true);
  25. xhr.onload
  26. =
  27. fonction () { callback.call(ça, xhr);
  28. }
  29. fd.append(thatthat.imgKey, this.result); // this.result récupère la base64 de l'image
  30. xhr.send(fd);
  31. }
  32. reader.readAsDataURL(file);//Obtenir l'encodage base64
  33. }
  34. }, faux);
  35. }
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal