index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
* {margin:0; padding:0; list-style: none}
.box {width:400px; height:200px; background:#CCC; border:1px solid black; line-height:200px; position:absolute; left:50%; top:50%; margin-left:-200px; margin-top:-100px; text-align:center; display:none;} .img_list {overflow:hidden;}
.img_list li {float:left; width:200px; height:200px; border:3px solid #666; margin:10px; position:relative;}
.img_list li img {width:100%; height:100%;}
.img_list li .del_btn {position:absolute; right:0; top:0;}
</style>
<script>
window.onload=function (){
let oUl=document.querySelector('.img_list');
let oBox=document.querySelector('.box');
let timer; document.addEventListener('dragover', (ev)=>{
clearTimeout(timer); oBox.style.display='block'; timer=setTimeout(function (){
oBox.style.display='none';
}, 300); ev.preventDefault();
}, false); oBox.addEventListener('dragenter', ()=>{
oBox.innerHTML='请松手';
}, false);
oBox.addEventListener('dragleave', ()=>{
oBox.innerHTML='请把文件拖到这儿';
}, false); oBox.addEventListener('drop', (ev)=>{
Array.from(ev.dataTransfer.files).forEach(file=>{
if(!file.type.startsWith('image/')){
return;
} let reader=new FileReader(); reader.onload=function (){
let oLi=document.createElement('li');
oLi.file=file;
oLi.innerHTML='<img src="a.png" alt=""><a href="javascript:;" class="del_btn">删除</a>'; let oImg=oLi.children[0];
oImg.src=this.result; let oBtnDel=oLi.children[1];
oBtnDel.onclick=function (){
oUl.removeChild(oLi);
}; oUl.appendChild(oLi);
}; reader.readAsDataURL(file);
}); ev.preventDefault();
}, false); //真的上传
let oBtnUpload=document.querySelector('#btn_upload');
oBtnUpload.onclick=function (){
let data=new FormData(); Array.from(oUl.children).forEach(li=>{
data.append('f1', li.file);
}); //
let oAjax=new XMLHttpRequest(); //POST
oAjax.open('POST', `http://localhost:8080/api`, true);
oAjax.send(data); oAjax.onreadystatechange=function (){
if(oAjax.readyState==4){
if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){
alert('成功');
}else{
alert('失败');
}
}
};
};
};
</script>
</head>
<body>
<ul class="img_list">
<!--<li>
<img src="a.png" alt="">
<a href="javascript:;" class="del_btn">删除</a>
</li>
<li>
<img src="b.png" alt="">
<a href="javascript:;" class="del_btn">删除</a>
</li>-->
</ul>
<input type="button" name="" value="上传" id="btn_upload">
<div class="box">
请把文件拖到这儿
</div>
</body>
</html>

最新文章

  1. c# UrlEncode,UrlDecode
  2. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
  3. Open Sourcing Kafka Monitor
  4. My First Django Project (2)
  5. HDU4784 Dinner Coming Soon(dp)
  6. mysql show processlist命令 详解
  7. Git for windows GUI使用
  8. java压缩/解压缩zip格式文件
  9. 浅拷贝 &amp;&amp;&amp;深拷贝 实现
  10. 前端入门13-JavaScript进阶之原型
  11. Javascript高级编程学习笔记(18)—— 引用类型(7)单体内置对象
  12. wget 下载命令
  13. 使用ionic开发时用遇到监听手机返回按钮的问题~
  14. win32获取浏览器当前Tab的URL
  15. Java 里如何实现线程间通信
  16. 基于Solr和Zookeeper的分布式搜索方案的配置
  17. Asp.net MVC5 返回json数据忽略序列化属性
  18. UVA 455(最小周期)
  19. hdu1151
  20. Downgrading an Exchange 2010 Server(Exchange降级)

热门文章

  1. HashMap 速描
  2. Java反射之成员变量的反射
  3. JVM笔记-垃圾收集算法与垃圾收集器
  4. activated钩子函数
  5. 使用PageHelper插件分页时,如何对对象进行转换以及添加属性
  6. Spring生命周期详解
  7. Jenkins的制品管理
  8. Natas13 Writeup(文件上传,绕过图片签名检测)
  9. ASP.NET Core - 在ActionFilter中使用依赖注入
  10. Servlet(四)----Request