原生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 相关文章推荐
js传值 判断
Oct 26 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
Sep 05 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
转换字符串为json对象的方法详解
Nov 29 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
jQuery的live()方法对hover事件的处理示例
Feb 27 Javascript
jquery分页插件jquery.pagination.js使用方法解析
Apr 01 Javascript
基于Javascript实现文件实时加载进度的方法
Oct 12 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
JS事件绑定的常用方式实例总结
Mar 02 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
短波的认识
2021/03/01 无线电
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
杏林同学录(五)
2006/10/09 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python轮询机制控制led实例
2020/05/03 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
英国森林假期:Forest Holidays
2021/01/01 全球购物
医院护士的求职信范文
2013/12/26 职场文书
家教广告词
2014/03/19 职场文书
高中教师评语大全
2014/04/25 职场文书
学校食堂标语
2014/10/06 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js