JavaScript使用FileReader实现图片上传预览效果

发布时间 - 2026-01-11 03:07:44    点击率:

FileReader是HTML5 File API的一部分。它实现了一种异步文件读取机制。可以把FileReader想象为XMLHttpRequest,区别只是它读取的是文件系统,而不是远程服务器。为了读取文件中的数据,FileReader提供了如下几个方法。

  • readAsText(file,encoding):以纯文本的方式读取文件,将读取到的文件保存到result属性中。
  • readAsDataURL(file):读取文件并将文件以数据URI的形式保存在result属性中。
  • readAsBinaryString(file):读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一个字节。
  • readAsArrayBuffer(file):读取文件并将一个包含文件内容的ArrayBuffer保存在result属性中。
  • multiple 属性表示支持多张图片
<div id="wrapper">  
 <input id="fileUpload" type="file" multiple /><br />
 <div id="image-holder"> </div>
</div>
$("#fileUpload").on('change', function () {
 
 //获取上传文件的数量
 var countFiles = $(this)[0].files.length;
 
 var imgPath = $(this)[0].value;
 var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
 var image_holder = $("#image-holder");
 image_holder.empty();
 
 if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
  if (typeof (FileReader) != "undefined") {
 
   // 循环所有要上传的图片
   for (var i = 0; i < countFiles; i++) {
 
    var reader = new FileReader();
    reader.onload = function (e) {
     $("<img />", {
      "src": e.target.result,
       "class": "thumb-image"
     }).appendTo(image_holder);
    }
 
    image_holder.show();
    reader.readAsDataURL($(this)[0].files[i]);
   }
 
  } else {
   alert("你的浏览器不支持FileReader!");
  }
 } else {
  alert("请选择图像文件。");
 }
});

FileReader 可以支持 Internet Explorer 10+、FireFox,、Chrome 和Opera浏览器。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# FileReader图片上传预览  # js图片上传预览  # js图片预览  # FileReader图片上传  # js利用FileReader读取本地文件或者blob方式  # JavaScript中的FileReader示例详解  # JavaScript通过filereader接口读取文件  # JS中FileReader类实现文件上传及时预览功能  # Js中FileReader读取文件内容方法详解(async/await)  # Js中的FileReader相关操作方法总结  # 并将  # 的是  # 几个  # 不支持  # 请选择  # 文件系统  # 大家多多  # 多张  # 上传文件  # 而不是  # 实现了  # 上传  # xhtml  # brush  # pre  # br  # multiple  # class  # input  # gt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: iOS UIView常见属性方法小结  LinuxShell函数封装方法_脚本复用设计思路【教程】  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  🚀拖拽式CMS建站能否实现高效与个性化并存?  Linux系统命令中screen命令详解  HTML 中动态设置元素 name 属性的正确语法详解  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  使用spring连接及操作mongodb3.0实例  如何在万网自助建站平台快速创建网站?  教你用AI润色文章,让你的文字表达更专业  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  jQuery 常见小例汇总  微信小程序 五星评分(包括半颗星评分)实例代码  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何使用模型观察者?(Observer代码示例)  EditPlus中的正则表达式实战(5)  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  jQuery validate插件功能与用法详解  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用免费手机建站系统零基础打造专业网站?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何在宝塔面板中修改默认建站目录?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  java获取注册ip实例  如何在阿里云虚拟主机上快速搭建个人网站?  Linux系统命令中tree命令详解  打造顶配客厅影院,这份100寸电视推荐名单请查收  Java遍历集合的三种方式  js实现点击每个li节点,都弹出其文本值及修改  网站优化排名时,需要考虑哪些问题呢?  如何用y主机助手快速搭建网站?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何确保FTP站点访问权限与数据传输安全?  Android使用GridView实现日历的简单功能  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  青岛网站建设如何选择本地服务器?  JavaScript如何实现继承_有哪些常用方法  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Linux安全能力提升路径_长期防护思维说明【指导】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  创业网站制作流程,创业网站可靠吗?  如何快速生成可下载的建站源码工具?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】