原生js FileReader对象实现图片上传本地预览效果


Posted in Javascript onMarch 27, 2020

本文实例为大家分享了js实现图片上传本地预览效果的具体代码,供大家参考,具体内容如下

原生js FileReader对象实现图片上传本地预览效果

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
 label{display: inline-block;width:200px;height:40px;border:1px solid #ccc;}
 .ob{background:#ccc;padding:10px;}
 .imgbox img{height:100px;width:100px;margin:10px;}
 </style>
</head>
<body>
 <div class="ob" id="od" draggable="true">
 <input type="file" id="file" multiple="multiple">
 </div>
 <div class="imgbox"></div>
 <script>
 //获取文件url
 function createObjectURL(blob){
 if (window.URL){
 return window.URL.createObjectURL(blob);
 } else if (window.webkitURL){
 return window.webkitURL.createObjectURL(blob);
 } else {
 return null;
 }
 }

 var box = document.querySelector(".imgbox"); //显示图片box
 var file = document.querySelector("#file"); //file对象
 var domFragment = document.createDocumentFragment(); //文档流优化多次改动dom

 //触发选中文件事件
 file.onchange = function(e){
 box.innerHTML =""; //清空上一次显示图片效果
 e = e || event;
 var file = this.files; //获取选中的文件对象

 for(var i = 0, len = file.length; i < len; i++){
 var imgTag = document.createElement("img");
 var fileName = file[i].name; //获取当前文件的文件名
 var url = createObjectURL(file[i]); //获取当前文件对象的URL

 //忽略大小写
 var jpg = (fileName.indexOf(".jpg") > -1) || (fileName.toLowerCase().indexOf(".jpg") > -1);
 var png = (fileName.indexOf(".png") > -1) || (fileName.toLowerCase().indexOf(".png") > -1);
 var jpeg = (fileName.indexOf(".jpeg") > -1) || (fileName.toLowerCase().indexOf(".jpeg") > -1);

 //判断文件是否是图片类型
 if(jpg || png || jpeg){
  imgTag.src = url;
  domFragment.appendChild(imgTag);
 }else{
  alert("请选择图片类型文件!");
 }
 }

 //最佳显示
 box.appendChild(domFragment);

 }

 </script>
</body>
</html>

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

Javascript 相关文章推荐
在VS2008中使用jQuery智能感应的方法
Dec 30 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
javascript实现json页面分页实例代码
Feb 20 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
javascript的 {} 语句块详解
Feb 27 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
微信小程序点击view动态添加样式过程解析
Jan 21 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
浅谈JS的二进制家族
May 09 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 #Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 #Javascript
jQuery.Ajax()的data参数类型详解
Jul 23 #jQuery
vue axios用法教程详解
Jul 23 #Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 #Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 #Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 #Javascript
You might like
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
JavaScript事件列表解说
2006/12/22 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
python引用DLL文件的方法
2015/05/11 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
python实现用户答题功能
2018/01/17 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
深入浅析Python的类
2018/06/22 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
中软国际Java程序员笔试题
2014/07/19 面试题
自荐信格式技巧有哪些呢
2013/11/19 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
食品安全工作方案
2014/05/07 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
Win2008系统搭建DHCP服务器
2022/06/25 Servers