主要用到的知识点有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拖放事件-上传图片预览功能的更多相关文章

  1. 通过HTML5 FileReader实现上传图片预览功能

    原文:http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201706224590.html 在上传图片到服务器之前,我们希望可以预览一下要上传的图片. ...

  2. HTML5上传图片预览功能

    HTML5上传图片预览功能 HTML代码如下: <!-- date: 2018-04-27 14:41:35 author: 王召波 descride: HTML5上传图片预览功能 --> ...

  3. JS 上传图片 + 预览功能(一)

    JS 上传图片 + 预览功能 <body> <input type="file" id="fileimg1" style="disp ...

  4. 【小月博客】用HTML5的File API做上传图片预览功能

    前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...

  5. 关于H5里的API,上传图片预览功能

    FileReader:读取本地图片文件并显示 写在开头 之前公司要求做一个H5页面,功能是照相和选择相册相片,并且能在屏幕上预览.然后我就傻里吧唧的各种找插件,因为有些插件不适配手机的型号,安卓机基本 ...

  6. h5拖放-上传图片预览功能

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. JS 上传图片 + 预览功能(二)

    简单粗暴 直接进入主题: Html <script src="../js/jquery-2.1.1.min.js"></script> <style& ...

  8. 简单实现JS上传图片预览功能

    HTML代码 <div class="upload"> <input type="button" class="btn" ...

  9. vue 结合 FileReader() 实现上传图片预览功能

    项目中 身份证上传需求: <div class="ID_pic_wrap"> <ul> <li> <img src="../.. ...

随机推荐

  1. IM 融云 之 列表及封装

    // // ChatListIMViewController.m // testRongCloudIM // // Created by WoodGao on 16/1/8. // Copyright ...

  2. 使用 Redis 统计在线用户人数

    在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线 ...

  3. css所有属性参考

    学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference

  4. javac不是内部或外部命令

    1.描述 在命令行输入javac,提示“不是内部或外部命令”. 2.解决过程 2.1.解决方案一 2.1.1.检查并添加环境变量 通常就是这个原因导致. 2.1.2.过程一 确实还是环境变量没有写对. ...

  5. js原生设计模式——9外观模式封装2(小型代码库YJ)

    <script type="text/javascript">    //小型代码库YJ封装    var YJ = {        //根据id获取元素       ...

  6. 拖动条(SeekBar)的功能和用法

    拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等 ...

  7. CentOS6.5固定IP方式上网(NAT)

    使用NAT模式 虚拟机网络连接使用NAT模式,物理机网络连接使用Vmnet8.如果没有重置一下即可 虚拟机设置里面--网络适配器,网络连接选择NAT模式. 虚拟机菜单栏-编辑-虚拟网络编辑器,选择Vm ...

  8. iReport默认参数和变量的含义解析【转】

    iReport默认参数和变量的含义解析[转] http://uule.iteye.com/blog/775338 参考:http://blog.csdn.net/terryzero/article/d ...

  9. JS属性操作

    一.属性读操作:元素.属性名   ( 获取.找到属性值 ) 属性写操作:元素.属性名 = 新的值   ( 替换.修改属性值 ) 二.没有属性名的,也可进行读.写操作: 读操作:元素.innerHTML ...

  10. C# backgroundworker使用方法

    # BackgroundWorker 控件的几个实例(C# backgroundworker使用方法): 在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面 ...