Drag & Drop and File Reader
参考 :
http://www.html5rocks.com/zh/tutorials/file/dndfiles/
http://blog.csdn.net/rnzuozuo/article/details/25295899
http://www.tutorialspoint.com/html5/html5_drag_drop.htm
本篇只作为个人参考
FIle Reader
method
abort() 停止读
readAsText(file,"utf-8") , 第2参数是指定解码格式,常用于读取一些 txt 文本等
readAsBinaryString(file) , 2进制, 可以用于ajax提交到后端
readAsDataURL(file) , 好像是base64 , 可以用于在本地显示图片
event
onabort 中断时触发
onerror 出错时触发
onload 文件读取成功完成时触发
onloadend 读取完成触发,无论成功或失败
onloadstart 读取开始时触发
onprogress 读取中
- //display img in local
- //2 way : FileReader and createObjectURL
- document.getElementById("upload").addEventListener("change", function (e) {
- var inputFile = e.target;
- var files = G.toArray(inputFile.files);
- var file = files[0];
- //note : minimum need ie10
- //createObjectURL to display img on local
- var URL = window.URL || window.webkitURL;
- var img = new Image();
- img.onload = function (e) {
- window.URL.revokeObjectURL(this.src);
- document.body.appendChild(this);
- }
- img.src = URL.createObjectURL(file);
- //note : minimum need ie10
- var reader = new FileReader();
- reader.onload = function (e) {
- var img = new Image();
- img.src = e.target.result;
- document.body.appendChild(img);
- }
- reader.readAsDataURL(file);
- }, false);
Drag & Drop
div 要可以drag , 就放一个 draggable="true"的属性,
div 要可以drop , 就 addEventListener dragover for preventDefault(),stopPropagation() then addEventListener drop
传输时value 只能是 string 类型
"event" 在传输的时候不是同一个引用
dataTransfer.getData 是可以跨游览器的
- document.getElementById("drop").addEventListener("dragover", function (e) {
- e.stopPropagation();
- e.preventDefault();
- log("over");
- }, false);
- document.getElementById("drop").addEventListener("dragenter", function (e) {
- e.stopPropagation();
- e.preventDefault();
- log("enter");
- }, false);
- document.getElementById("drop").addEventListener("drop", function (e) {
- //var files = e.dataTransfer.files; //if drop a file from window. like use file update
- //log(dataTransfer.types); //if is file = "Files" , else DOMStringList
- e.dataTransfer.dropEffect = 'move'; //copy, link, and move
- var data = e.dataTransfer.getData("key");
- e.preventDefault();
- log("drop!");
- }, false);
- document.getElementById("drag").addEventListener("dragstart", function (e) {
- e.dataTransfer.setData("key", "must string");
- e.dataTransfer.effectAllowed = 'copyLink'; //none, copy, copyLink, copyMove, link, linkMove, move, all and uninitialized.
- var specifiedImage = document.getElementById("liushishi");
- e.dataTransfer.setDragImage(specifiedImage, 100, 100); //para2,para3 is mouse position x,y in the target element
- //e.dataTransfer.addElement(specifiedImage); //this method is same with setDragImage , better use setDragImage , because can set x,y
- log("drag");
- }, false);
Drag & Drop and File Reader的更多相关文章
- [转]人人网首页拖拽上传详解(HTML5 Drag&Drop、FileReader API、formdata)
人人网首页拖拽上传详解(HTML5 Drag&Drop.FileReader API.formdata) 2011年12月11日 | 彬Go 上一篇:给力的 Google HTML5 训练营( ...
- HTML5魔法堂:全面理解Drag & Drop API
一.前言 在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML5的DnD API觉得那些痛苦的日子将一去不复返,但事实又是怎样的呢?下面我们一起来看看DnD API的真面 ...
- JS魔法堂:IE5~9的Drag&Drop API
一.前言 < HTML5魔法堂:全面理解Drag & Drop API>中提到从IE5开始已经支持DnD API,但IE5~9与HTML5的API有所不同,下面我们来了解一 ...
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注 ...
- Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结
Atitit.D&D drag&drop拖拽功能c#.net java swing的对比与实现总结 1. 实现一个D&D操作一般包括三个步骤: 1 2. .net黑头的拖曳机制 ...
- HTML 学习笔记 (drag & drop)
拖放(Drag & Drop)是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放.过去,我们用监听鼠标的Mousedown.Mouseo ...
- Win10/UWP新特性—Drag&Drop 拖出元素到其他App
在以前的文章中,写过微软新特性Drag&Drop,当时可能由于处于Win10预览版,使用的VS也是预览版,只实现了从桌面拖拽文件到UWP App中,没能实现从UWP拖拽元素到Desktop A ...
- Draggabilly – 轻松实现拖放功能(Drag & Drop)
Draggabilly 是一个很小的 JavaScript 库,专注于拖放功能.只需要简单的设置参数就可以在你的网站用添加拖放功能.兼容 IE8+ 浏览器,支持多点触摸.可以灵活绑定事件,支持 Req ...
- 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop
[源码下载] 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 作者:weba ...
随机推荐
- Q - Tour - hdu 3488(最小匹配值)
题意:一个王国有N个城市,M条路,都是有向的,现在可以去旅游,不过走的路只能是环(至少也需要有两个城市),他们保证这些城市之间的路径都是有环构成的,现在至少需要走多少路. 分析:因为是有向图所以,而且 ...
- linux/hpux 添加用户
#添加用户组, 组名dev, 组id为1001groupadd -g 1001 dev #添加用户组dev,不指定组idgroupadd dev #添加用户user1, id为111, 属于dev组, ...
- Firefox中firebug和xpath checker工具的使用
一直想把自己这段时间做的东西整理下,确迟迟没有动手,现在信息抽取工作已经做的差不多,把自己感觉很好用的两个工具介绍给大家吧! Firefox真是一个好东西,它许多插件.本人是很讨厌插件的,每次电 ...
- C# 将MSMQ消息转换成Json格式 【优化】
C# 将MSMQ消息转换成Json格式 [优化] 转换函数: private string ConvertToJSON(string label, string body) { //TODO: co ...
- UML简易看懂
这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...
- linux批量执行工具omnitty使用方法
一.omnitty概述 在生产环境中,可能会有多台linux主机.运维人员可能会对多台主机进行同样的操作,例:同时在多台主机上添加一个user或查看所有主机的硬件信息,如果没有批量操作工具,设备少于2 ...
- Nginx优化—配置优化
完整配置如下所示: user nginx; #运行的用户 pid /var/run/nginx.pid; worker_processes auto; #定义了nginx对外提供web服务时的word ...
- poj 1595
#include <iostream> #define N 10010 using namespace std; int a[N],b[N]; int prime(int a) { int ...
- effective C#之 - 使用属性代替成员变量
使用属性代替公共成员变量,一个很明显的好处是,很容易在一个地方对成员变量进行控制,例如: class Customer { private string name; public string Nam ...
- iOS中忽略NSLog打印信息(通过PCH文件中定义DEBUG宏解决)
iOS中忽略NSLog打印信息 解决办法: 1.新建PrefixHeader_pch文件,在该文件中定义一下宏 //通过DEBUG宏的定义来解决Debug状态下和Release状态下的输出 #ifde ...