<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拖拽</title>
<style>
#drag_box{
width:100px;
height:100px;
border:1px solid orange;
background:#ccc;
cursor: pointer;
}
#box{
width:100%;
height:400px;
background:#eee;
margin:10px 0px;
}
#box .item{
float:left;
margin:5px;
position:relative;
}
#box .item .item-progress{
position:absolute;
left:50%;
top:50%;
width:80px;
height:80px;
transform: translate(-50%, -50%);
background:rgba(0,0,0,.6);
border-radius:40px;
color:#fff;
text-align: center;
line-height:80px;
}
#box img{
max-height: 150px;
}
.over{
border:2px dashed #ccc;
transform: scale(0.9, 0.9);
}
</style>
</head>
<body>
<h3>請把文件夾中的圖片拖到下面區(qū)域</h3>
<div id="box">
</div>
<script>
//獲取目標(biāo)元素
var box = document.querySelector("#box");
//給目標(biāo)元素綁定事件
box.addEventListener("dragenter", function(){
this.classList.add('over');
}, false);
box.addEventListener("dragleave", function(){
this.classList.remove("over");
}, false);
box.addEventListener("dragover", function(e){
e.preventDefault(); //阻止默認(rèn)的動作
}, false);
box.addEventListener("drop", function(e){
e.preventDefault(); //阻止瀏覽器默認(rèn)行為
//遍歷FileList
[].forEach.call(e.dataTransfer.files, function(itemFile){
//創(chuàng)建imte
var itemEle = document.createElement("div");
itemEle.className = "item";
document.getElementById("box").appendChild(itemEle);
//讀取文件
readImage(itemFile, itemEle);
//上傳文件
uploadImage(itemFile, itemEle);
})
this.classList.remove("over"); //恢復(fù)樣式
},false);
/**
* 讀取圖片
* @param File fileObj
* @Param element ele 要預(yù)覽插入的元素
*/
function readImage(fileObj, ele) {
//創(chuàng)建FileReader對象
var frObj = new FileReader();
//監(jiān)聽讀取成功
frObj.onload = function(){
var img = document.createElement("img");
img.src = frObj.result;
ele.appendChild(img);
}
//讀取
frObj.readAsDataURL(fileObj);
}
/**
* 上傳文件
* @param object FileObj對象
* @param element ele對象
*/
function uploadImage(fileObj, ele){
//創(chuàng)建FormData
var fd = new FormData();
fd.append("uploadfile", fileObj);
//創(chuàng)建元素
var progressEle = document.createElement("div");
progressEle.className = "item-progress";
ele.appendChild(progressEle);
progressEle.innerHTML = "0%";
//XHR
var xhr = new XMLHttpRequest();
xhr.onload = function(){
console.log(xhr.responseText);
//上傳進(jìn)度去掉
setTimeout(function(){
ele.removeChild(progressEle);
}, 500)
}
//上傳對象
xhr.upload.onprogress = function(en){
progressEle.innerHTML = (en.loaded/en.total).toFixed(2)*100 + "%";
}
xhr.open("POST", "../uploadserver/upload.php");
xhr.send(fd);
}
</script>
</body>
</html>
API+FileReader+XHR2+FormData,實(shí)現(xiàn)拖拽上傳文件
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門趴久,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搔确,你說我怎么就攤上這事彼棍。” “怎么了膳算?”我有些...
- 文/不壞的土叔 我叫張陵座硕,是天一觀的道長。 經(jīng)常有香客問我涕蜂,道長华匾,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任机隙,我火速辦了婚禮蜘拉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘有鹿。我一直安慰自己旭旭,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布葱跋。 她就那樣靜靜地躺著持寄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娱俺。 梳的紋絲不亂的頭發(fā)上稍味,一...
- 文/蒼蘭香墨 我猛地睜開眼悴了,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熟空?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對情侶失蹤息罗,失蹤者是張志新(化名)和其女友劉穎迈喉,沒想到半個月后温圆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡得运,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年熔掺,在試婚紗的時候發(fā)現(xiàn)自己被綠了帆啃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布布卡,位于F島的核電站忿等,受9級特大地震影響崔挖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狸相,卻給世界環(huán)境...
- 文/蒙蒙 一脓鹃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瘸右,春花似錦、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歌亲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惋鸥,已是汗流浹背悍缠。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像添履,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缝龄,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 1瞎饲、首先簡單的介紹一下前端工作的流程(大概原理,如果閱讀本文的是后臺開發(fā)則不需要深入掌握)將windows上的文件...
- GMAIL郵箱的附件拖拽上傳功能給部分用戶帶來及極大的方便嗅战,而且一些需要大量上傳文件的后臺管理中也會感受到拖拽上傳...
- 換一個角度看風(fēng)景DAY.1 明知道國慶第一天會很堵的我還是選擇了在黃金周第一天出行,清早的長沙下著牛毛細(xì)雨本讥。一個人...
- 01/遇見鄭州行動派的伙伴,成長加速器 2016年的四月份拷沸,大一下學(xué)期的我加入了鄭州行動派校園盟,在一次次的活動中...