原生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 相关文章推荐
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
JavaScript函数模式详解
Nov 07 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
Dec 31 Javascript
JavaScript继承模式粗探
Jan 12 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
Vue实现PopupWindow组件详解
Apr 28 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
vue中axios的二次封装实例讲解
Oct 14 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
es6函数之尾调用优化实例分析
Apr 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
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python实现微信防撤回神器
2019/04/29 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
函授本科个人自我鉴定
2014/03/25 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
涨价通知怎么写
2015/04/23 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
关于python中模块和重载的问题
2021/11/02 Python
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android