原文:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201706224590.html

  1. 在上传图片到服务器之前,我们希望可以预览一下要上传的图片。这个功能可以通过HTML5 FileReader()方法来实现。
  2. FileReaderHTML5 File API的一部分。它实现了一种异步文件读取机制。可以把FileReader想象为XMLHttpRequest,区别只是它读取的是文件系统,而不是远程服务器。为了读取文件中的数据,FileReader提供了如下几个方法。
  3. readAsText(file,encoding):以纯文本的方式读取文件,将读取到的文件保存到result属性中。
  4. readAsDataURL(file):读取文件并将文件以数据URI的形式保存在result属性中。
  5. readAsBinaryString(file):读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一个字节。
  6. readAsArrayBuffer(file):读取文件并将一个包含文件内容的ArrayBuffer保存在result属性中。
  7. 通过readAsDataURL(file)方法,我们就可以将读取到的图片数据以URI的方式显示在页面中。
  8. 例如下面是一个上传图片预览的例子:
  9. 选择文件
  10.  
  11. 上面例子中的HTML代码如下:
  12. <div id="wrapper">
  13. <input id="fileUpload" type="file" /><br />
  14. <div id="image-holder"> </div>
  15. </div>
  16. 下面是结合jQueryFileReader来实现上传图片预览的代码:
  17. $("#fileUpload").on('change', function () {
  18.  
  19. if (typeof (FileReader) != "undefined") {
  20.  
  21. var image_holder = $("#image-holder");
  22. image_holder.empty();
  23.  
  24. var reader = new FileReader();
  25. reader.onload = function (e) {
  26. $("<img />", {
  27. "src": e.target.result,
  28. "class": "thumb-image"
  29. }).appendTo(image_holder);
  30.  
  31. }
  32. image_holder.show();
  33. reader.readAsDataURL($(this)[0].files[0]);
  34. } else {
  35. alert("你的浏览器不支持FileReader.");
  36. }
  37. });
  38. 实现多张图片预览效果
  39. 先来看看效果,下面是一个可以预览多张上传图片的例子。
  40. 选择文件
  41.  
  42. 在前面我们已经可以预览一张上传的图片。要想实现多张图片预览效果,必须在文件上传标签中添加multiple属性,使它可以选择多张图片。
  43. <div id="wrapper">
  44. <input id="fileUpload" type="file" multiple /><br />
  45. <div id="image-holder"> </div>
  46. </div>
  47. 然后修改一下上面的jQuery代码,使用一个循环来遍历所有要上传的图片,最后将它们分别显示出来。
  48. $("#fileUpload").on('change', function () {
  49.  
  50. //获取上传文件的数量
  51. var countFiles = $(this)[0].files.length;
  52.  
  53. var imgPath = $(this)[0].value;
  54. var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
  55. var image_holder = $("#image-holder");
  56. image_holder.empty();
  57.  
  58. if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
  59. if (typeof (FileReader) != "undefined") {
  60.  
  61. // 循环所有要上传的图片
  62. for (var i = 0; i < countFiles; i++) {
  63.  
  64. var reader = new FileReader();
  65. reader.onload = function (e) {
  66. $("<img />", {
  67. "src": e.target.result,
  68. "class": "thumb-image"
  69. }).appendTo(image_holder);
  70. }
  71.  
  72. image_holder.show();
  73. reader.readAsDataURL($(this)[0].files[i]);
  74. }
  75.  
  76. } else {
  77. alert("你的浏览器不支持FileReader!");
  78. }
  79. } else {
  80. alert("请选择图像文件。");
  81. }
  82. });
  83. HTML5 FileReader 可以在 Internet Explorer 10+、FireFox,、Chrome Opera浏览器中正常工作。

通过HTML5 FileReader实现上传图片预览功能的更多相关文章

  1. HTML5拖放事件-上传图片预览功能

    主要用到的知识点有dataTransfer对象和FileReader(读取文件信息) 1.创建简单的HTML标签: <body> <div id="box"> ...

  2. vue 结合 FileReader() 实现上传图片预览功能

    项目中 身份证上传需求: <div class="ID_pic_wrap"> <ul> <li> <img src="../.. ...

  3. HTML5上传图片预览功能

    HTML5上传图片预览功能 HTML代码如下: <!-- date: 2018-04-27 14:41:35 author: 王召波 descride: HTML5上传图片预览功能 --> ...

  4. JS 上传图片 + 预览功能(一)

    JS 上传图片 + 预览功能 <body> <input type="file" id="fileimg1" style="disp ...

  5. 【小月博客】用HTML5的File API做上传图片预览功能

    前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...

  6. 关于H5里的API,上传图片预览功能

    FileReader:读取本地图片文件并显示 写在开头 之前公司要求做一个H5页面,功能是照相和选择相册相片,并且能在屏幕上预览.然后我就傻里吧唧的各种找插件,因为有些插件不适配手机的型号,安卓机基本 ...

  7. h5拖放-上传图片预览功能

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. JS 上传图片 + 预览功能(二)

    简单粗暴 直接进入主题: Html <script src="../js/jquery-2.1.1.min.js"></script> <style& ...

  9. 简单实现JS上传图片预览功能

    HTML代码 <div class="upload"> <input type="button" class="btn" ...

随机推荐

  1. POJ 3469 最小割 Dual Core CPU

    题意: 一个双核CPU上运行N个模块,每个模块在两个核上运行的费用分别为Ai和Bi. 同时,有M对模块需要进行数据交换,如果这两个模块不在同一个核上运行需要额外花费. 求运行N个模块的最小费用. 分析 ...

  2. UVa 1629 DP Cake slicing

    题意: 一块n×m的蛋糕上有若干个樱桃,要求切割若干次以后,每块蛋糕上有且仅有1个樱桃.求最小的切割长度. 分析: d(u, d, l, r)表示切割矩形(u, d, l, r)所需要的最小切割长度. ...

  3. 《小团团团队》第八次团队作业:Alpha冲刺

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 小团团团队 作业学习目标 (1)掌握软件测试基础技术; (2)学 ...

  4. FTP的搭建过程,以及遇到的坑

    在之前的博客中,我有说到,我最喜欢用Yum在线安装的方式安装软件,简单省事儿.现在看来,也不尽然,关键是,无法快速找到我要的文件,整个whereis 也很累.所以,现在觉得,还是乖乖的整个压缩包,自行 ...

  5. Welcome-to-Swift-11方法(Methods)

    方法是由特定类型关联起来的函数.类.结构体和枚举都能定义成实例方法.它封装了特定的任务和给定类型的实例的功能函数.类,结构体和方法也能定义类型方法,它只与类型的本身由关联.类型方法和Objective ...

  6. java程序实现视频格式的转换

    http://blog.sina.com.cn/s/blog_96b60b0c01013mi5.html 原文地址:java程序实现视频格式的转换作者:笑看风云 flv格式转换--第一步 不定期更新. ...

  7. 【Luogu】P2766最长不下降子序列问题(暴力网络流)

    题目链接 水题qwq,数据都那么水. 我要是出数据的人我就卡$n^3$建图. qwq. 然而这么水的题我!居!然!没!有!1!A!!还!提!交!了!五!遍!!! md从现在开始要锻炼1A率了 看我从今 ...

  8. 用meta标签让网页用360打开时默认为极速模式

    最近做项目,用360浏览器访问自己的本地网页,发现都是默认在兼容模式下打开,做的淡入淡出轮播效果在兼容模式下看时,感觉切换很生硬.百度,发现360官网帮助里有说明用meta标签控制浏览器内核,网址为h ...

  9. Educational Codeforces Round 10——B. z-sort

    B. z-sort time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  10. iOS-多线程(3)

    多线程之GCD(grand central dispatch)中心调度 为了简化多线程的操作,iOS为我们提供了GCD来实现编程. 使用GCD只要遵守两个步骤即可: 创建对列(串行队列,并行队列) 将 ...