Skip to content

Commit 4982c5d

Browse files
拖拽事件
1 parent 0c1c58f commit 4982c5d

File tree

2 files changed

+95
-4
lines changed

2 files changed

+95
-4
lines changed

4 其他/upload/README.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
# 上传功能实现整理
2-
## 1. upload1
3-
* upload1.html
2+
## 1. upload
3+
* **upload1.html**
44
基本单选和多选上传功能的实现
5-
* upload2.html
6-
支持H5进度显示、文件详情、预览图
5+
* **upload2.html**
6+
1、支持H5进度显示、文件详情、预览图
7+
2、FormData模拟表单数据
8+
3、如果图片上传前要修改(裁剪/旋转等),一般是转化为canvas处理,随后把canvas转成base64字符串或blob对象上传
79
* **图片居中、上传预览.html**
810
1、水平垂直居中的两种实现:CSS-table & js计算
911
2、图片的max宽高的两种实现:CSS & js计算
1012
3、预览图的实现的三种方式:
1113
【file -> base64】、【file -> blob】、【canvas】
1214
4、FileReader 读取文件常见属性
15+
* **拖拽事件.html**
16+
1、拖拽事件的判断
17+
2、识别文件/文件夹
1318

1419
## 2. webuploader-demo
1520

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<script>
6+
// 拖拽事件DragEvent HTML5
7+
// drag、dragend、dragenter、dragexit、dragleave、dragover、dragstart、drop
8+
// 常用的四个:dragenter、dragover、drop、dragend
9+
// 分别对应的事件为:拖进、拖来拖去、释放鼠标、拖出
10+
// 上传在drop进行(松开鼠标),然后可从event取到dataTransfer.files对象,获得拖拽的数据
11+
12+
document.addEventListener("dragenter", function( event ) {
13+
console.log("dragenter");
14+
}, false);
15+
16+
document.addEventListener("dragover", function( event ) {
17+
console.log("dragover");
18+
}, false);
19+
20+
document.addEventListener("drop", function( event ) {
21+
event.preventDefault();//禁止浏览器默认行为
22+
console.log("drop");
23+
// 获取文件
24+
console.log(Object.prototype.toString.call(event.dataTransfer.files));//[object FileList]
25+
// 遍历文件
26+
var file;
27+
var files = event.dataTransfer.files;
28+
for(var i = 0; i < files.length; i++){
29+
// 识别文件/文件夹
30+
// event.dataTransfer不能很好的区分文件/文件夹:
31+
// 1. 部分文件夹仍会显示size
32+
// 2. 文件夹的File的type为"",不加拓展名的文件File的type也为""
33+
// 利用FileReader判断,三种方式可以读取文件,但是读取文件夹的时候会触发error
34+
// var fr = new FileReader();
35+
// fr.readAsBinaryString(file);
36+
// fr.readAsDataURL(file);
37+
// fr.readAsText(file);
38+
// fr.onload=function(e){
39+
// var data = this.result;
40+
// }
41+
// fr.onerror=function(e){
42+
// //...
43+
// }
44+
file = files [i];// 或 file = files.item(i);
45+
myFileReader(file,function(result,file){
46+
if(result){
47+
//文件
48+
console.log("文件");
49+
}else{
50+
//文件夹
51+
console.log("文件夹");
52+
}
53+
});
54+
console.log(file.name);
55+
}
56+
return false;//禁止浏览器默认行为
57+
}, false);
58+
59+
document.addEventListener("dragend", function( event ) {
60+
console.log("dragend");
61+
}, false);
62+
63+
function myFileReader(file, callback){
64+
if(!window.FileReader){
65+
callback(true,file);
66+
return false;
67+
}
68+
var fr = new FileReader();
69+
fr.readAsDataURL(file);
70+
fr.onload=function(e){
71+
callback(true,file);
72+
}
73+
fr.onerror=function(e){
74+
75+
callback(false,file);
76+
}
77+
return true;
78+
};
79+
80+
</script>
81+
82+
</head>
83+
<body>
84+
85+
</body>
86+
</html>

0 commit comments

Comments
 (0)