原生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 相关文章推荐
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
js数组去重的方法汇总
Jul 29 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
让你一句话理解闭包(简单易懂)
Jun 03 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
JavaScript中return用法示例
Nov 29 Javascript
jquery实现图片平滑滚动详解
Mar 22 jQuery
javascript 中select框触发事件过程的分析
Aug 01 Javascript
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 Javascript
Vue 监听列表item渲染事件方法
Sep 06 Javascript
webpack的移动端适配方案小结
Jul 25 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
JavaScript 对象模型 执行模型
2009/12/06 Javascript
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
详解a++和++a的区别
2017/08/30 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Python中实现输入一个整数的案例
2020/05/03 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
Python 内存管理机制全面分析
2021/01/16 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
理工学院学生自我鉴定
2014/02/23 职场文书
暑假生活随笔
2015/08/15 职场文书
公司管理建议书
2015/09/14 职场文书
任命书格式范文
2015/09/22 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers