HTML5拖放事件-上传图片预览功能
主要用到的知识点有dataTransfer对象和FileReader(读取文件信息)
1、创建简单的HTML标签:
<body>
<div id="box">请将图片拖拽至此</div>
<ul></ul>
</body>
2、给标签加上简单的样式:
<style type="text/css">
div{
width: 300px;
height: 300px;
margin:100px;
background: orange;
}
</style>
3、编写JS,用到四个拖放事件中的4个目标元素事件
dragenter事件:进入目标元素触发,改变div的innerHTML值:
var oDiv = document.getElementById('box');
var oUl = document.getElementsByTagName('ul')[0];
oDiv.ondragenter = function(){
this.innerHTML = '可以释放啦';
}
dragover事件:进入目标、离开目标之间,连续触发;注意:为什么要在这里加上这个事件?因为后续要触发drop事件的时候需要在dragover阻止,默认事件:
oDiv.ondragover = function( ev ){
ev.preventDefault();
}
dragleaver事件:离开目标元素触发
oDiv.ondragleave = function(){
this.innerHTML = '请将图片拖拽至此';
}
drop事件:在目标元素上释放鼠标触发
dataTransfer对象里面有一个files属性:获取外部拖拽的文件,返回一个filesList列表;filesList下有个type属性,返回文件的类型
oDiv.ondrop = function( ev ){
ev.preventDefault();
var fs = ev.dataTransfer.files;
// alert( fs.length )
// alert( fs[0].type )
for(var i=0; i<fs.length; i++){
if( fs[i].type.indexOf('image') != -1){ //利用返回的type属性值字符串包含image来判断文件类型
var fd = new FileReader(); //读取文件信息
fd.readAsDataURL( fs[i] ); //参数为读取的文件对象,将文件读取为DataURL
fd.onload = function(){ //当读取文件成功完成的时候触onload事件
var oImg = document.createElement('img');
var oLi = document.createElement('li');
oImg.src = this.result; //获取文件的数据,当文件是图片,返回base64的图片数据
oLi.appendChild(oImg);
oUl.appendChild(oLi);
}
}else{
alert('请上传图片类型!');
}
}
}
HTML5拖放事件-上传图片预览功能的更多相关文章
- 通过HTML5 FileReader实现上传图片预览功能
原文:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201706224590.html 在上传图片到服务器之前,我们希望可以预览一下要上传的图片. ...
- HTML5上传图片预览功能
HTML5上传图片预览功能 HTML代码如下: <!-- date: 2018-04-27 14:41:35 author: 王召波 descride: HTML5上传图片预览功能 --> ...
- JS 上传图片 + 预览功能(一)
JS 上传图片 + 预览功能 <body> <input type="file" id="fileimg1" style="disp ...
- 【小月博客】用HTML5的File API做上传图片预览功能
前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...
- 关于H5里的API,上传图片预览功能
FileReader:读取本地图片文件并显示 写在开头 之前公司要求做一个H5页面,功能是照相和选择相册相片,并且能在屏幕上预览.然后我就傻里吧唧的各种找插件,因为有些插件不适配手机的型号,安卓机基本 ...
- h5拖放-上传图片预览功能
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- JS 上传图片 + 预览功能(二)
简单粗暴 直接进入主题: Html <script src="../js/jquery-2.1.1.min.js"></script> <style& ...
- 简单实现JS上传图片预览功能
HTML代码 <div class="upload"> <input type="button" class="btn" ...
- vue 结合 FileReader() 实现上传图片预览功能
项目中 身份证上传需求: <div class="ID_pic_wrap"> <ul> <li> <img src="../.. ...
随机推荐
- 微信小程序之----弹框组件modal
modal modal类似于javascript中的confirm弹框,默认情况下是一个带有确认取消的弹框,不过点击取消后弹框不会自动隐藏,需要通过触发事件调用函数来控制hidden属性. 官方文档 ...
- SQL Server 2012 - 数据库的基础操作
数据库基本操作 --新建数据库卡 use master go create database SchoolDB on ( Name=SchoolDB, FileName='D;\DB\SchoolDB ...
- Dictionary使用(转)
1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib)2.描述 1).从一组键(Key)到一组值(Value)的 ...
- IOS 微信
原文:http://blog.csdn.net/ysy441088327/article/details/8441608 按照常例,列一些网址先: 微信开放平台首页: http://open.weix ...
- cpu95%,查找问题sql
收到一封告警邮件: Load average on xxx_server reached critical threshold values - 169.5 Current Load Avg = 16 ...
- 解压文件--linux
linux下不同的文件格式用不同的命令解压. 对于tar.gz文件,用以下命令. .tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileNa ...
- 阿里CEO张勇公开信:把眼光从股市回到客户身上
8月25日消息,面对全球资本市场的剧烈波动,阿里巴巴集团CEO张勇今日发表致员工信,倡议全体阿里员工把眼光从股市回到客户身上,脚踏实地的服务帮助客户,为客户创造价值,继而为股东和自己创造价值. 张 ...
- C# winform DatagridView 的简单操作
数据显示操作: dgBill.Columns[0].DataPropertyName = "key1"; dgBill.Columns[1].DataPropertyName = ...
- JSP编译为Java类
JSP编译为Java类: 注意可以随便写import的内容:可以写类属性.方法.main函数.内部类:可以使用内部类: JSP: <%@ page language="java&quo ...
- 在COM组件中调用JS函数
要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度.这就要求使用回调函数,设其名称为scri ...