原生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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
Aug 20 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
Easyui 之 Treegrid 笔记
Apr 29 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
Vue官网todoMVC示例代码
Jan 29 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
Dec 28 Javascript
使用js在layui中实现上传图片压缩
Jun 18 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 Javascript
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 Javascript
解决vuex刷新数据消失问题
Nov 12 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
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
理解Python中的With语句
2016/03/18 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python实现dijkstra最短路由算法
2019/01/17 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python requests上传文件实现步骤
2020/09/15 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
医学生自我鉴定范文
2013/11/08 职场文书
实习单位推荐信范文
2013/11/27 职场文书
优秀企业获奖感言
2014/02/01 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
体育教师求职信
2014/06/30 职场文书
如何在Python项目中引入日志
2021/05/31 Python
OpenCV实现普通阈值
2021/11/17 Java/Android
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang