原生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 相关文章推荐
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
JQuery Tips相关(1)----关于$.Ready()
Aug 14 Javascript
javascript中几个容易混淆的概念总结
Apr 14 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
Feb 16 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
Javascript动画效果(4)
Oct 11 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
React forwardRef的使用方法及注意点
Jun 13 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
mysql 全文搜索 技巧
2007/04/27 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
Python中list初始化方法示例
2016/09/18 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
django缓存配置的几种方法详解
2018/07/16 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
网络管理员岗位职责
2014/03/17 职场文书
yy生日主持词
2014/03/20 职场文书
销售员岗位职责
2014/06/09 职场文书
债务授权委托书范本
2014/10/17 职场文书
期末复习计划
2015/01/19 职场文书
任命书怎么写
2015/03/02 职场文书
公司开会通知
2015/04/20 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
新年寄语2016
2015/08/17 职场文书
高一语文教学反思
2016/02/16 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技