第90天:HTML5中文件API和拖放操作

简介: 一、文件APIFile API:提供客户端本地操作文件的可能multiple是让文件域可以多选 1 DOCTYPE html> 2 3 4 5 文件API 6 7 8 9 10 11 12 ...

一、文件API

File API:提供客户端本地操作文件的可能

multiple是让文件域可以多选
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>文件API</title>
 6     <link rel="stylesheet" href="bootstrap.css">
 7 </head>
 8 <body>
 9     <form action="">
10         <!--对于表单里的input可以直接通过name属性找到它 document.forms[0].input_file   multiple是让文件域可以多选-->
11         <input id="input_file" class="form-control hidden" type="file" name="input_file" multiple>
12         <input id="btn_select" class="btn btn-info" type="button" value="选择文件">
13         <!--<input id="btn_read" class="btn btn-warning" type="button" value="读取文件列表">-->
14         <ul id="file_list" class="list-group">
15 
16         </ul>
17     </form>
18     <script>
19         (function(){
20             var inputFile=document.querySelector('#input_file');
21             var btnRead=document.querySelector('#btn_read');
22             var fileList=document.querySelector('#file_list');
23             var btnSelect=document.querySelector('#btn_select');
24 
25             btnSelect.addEventListener('click',function(){
26                 //在按钮点击时调用input的点击
27                 inputFile.click();
28             });
29 
30             //点击过后
31             /*btnRead.addEventListener('click',function(){
32                 var files=inputFile.files;
33                 for(var i=0;i<files.length;i++){
34                     var li=document.createElement('li');
35                     li.setAttribute('class','list-group-item');
36                     //创建信息的子节点
37                     li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
38                     fileList.appendChild(li);
39                 }
40             });*/
41 
42             //选择完成后 直接显示文件信息
43             inputFile.addEventListener('change',function(){
44                 var files=inputFile.files;
45                 for(var i=0;i<files.length;i++){
46                     var li=document.createElement('li');
47                     li.setAttribute('class','list-group-item');
48                     //创建信息的子节点
49                     li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
50                     fileList.appendChild(li);
51                 }
52             });
53         })();
54     </script>
55 </body>
56 </html>

二、拖放操作

在捕获drop事件时,必须先阻止默认事件。

//如果要捕获drop事件,就一定要在该事件中阻止默认事件
     target.addEventListener('dragover',function(e){
        e.preventDefault();//阻止默认事件
        e.stopPropagation();//阻止冒泡
     });
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <title>拖放操作</title>
 7   <meta name="author" content="汪磊">
 8   <link rel="stylesheet" href="bootstrap.css">
 9   <style>
10     #target {
11       padding: 20px;
12       height: 300px;
13       border: 5px dashed #c0c0c0;
14       color: #e0e0e0;
15       font-size: 40px;
16       line-height: 260px;
17       text-align: center;
18       -webkit-user-select: none;
19       cursor: pointer;
20     }
21     
22     #target.actived {
23       border-color: #888;
24       color: #eaeaea;
25       box-shadow: 0 0 80px #e0e0e0 inset;
26     }
27   </style>
28 </head>
29 
30 <body>
31   <div class="container">
32     <div class="page-header">
33       <h1>Drag&Drop</h1></div>
34     <div class="jumbotron">
35       <p>你好啊,你今年几岁啊,哈哈,我的今天在哪里</p>
36       <img src="toy.png" alt="">
37     </div>
38       <ul id="result" class="list-group"></ul>
39     <div id="target">
40       Drag something into here
41     </div>
42   </div>
43   <script>
44     (function(){
45       //找到目标事件框
46       var target=document.querySelector('#target');
47       var fileList=document.querySelector('#result');
48       //注册拖拽进入
49       target.addEventListener('dragenter',function(){
50         this.classList.add('actived');//添加类名
51       });
52       //注册拖拽离开
53       target.addEventListener('dragleave',function(){
54         this.classList.remove('actived');//添加类名
55       });
56       //如果要捕获drop事件,就一定要在该事件中阻止默认事件
57       target.addEventListener('dragover',function(e){
58         e.preventDefault();//阻止默认事件
59         e.stopPropagation();//阻止冒泡
60       });
61 
62       //当元素放到该对象上时
63       target.addEventListener('drop',function(e){
64         if(e.dataTransfer.files.length){
65           var files=e.dataTransfer.files;
66           for(var i=0;i<files.length;i++){
67             var li=document.createElement('li');
68             li.setAttribute('class','list-group-item');
69             //创建信息的子节点
70             li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
71             fileList.appendChild(li);
72           }
73         }else {
74 
75           //短路运算
76           //var data= e.dataTransfer.getData('text/plain')||e.dataTransfer.getData('text/uri-list');
77           var uri = e.dataTransfer.getData('text/uri-list');
78           var text = e.dataTransfer.getData('text/plain');
79           if (uri) {
80             var img = document.createElement('img');
81             img.setAttribute('src', uri);
82             target.appendChild(img);
83           } else if (text) {
84             var textNode = document.createTextNode(text);
85             target.appendChild(textNode);
86           }
87         }
88           this.classList.remove('actived');//添加类名
89 
90         e.preventDefault();
91         e.stopPropagation();
92         console.log(e);
93       });
94 
95     })();
96   </script>
97 </body>
98 
99 </html>

 

相关文章
|
28天前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
26 1
|
1月前
|
Java API Maven
HDFS的API操作
HDFS的API操作
25 0
|
1月前
如何在HTML文件中添加超链接
如何在HTML文件中添加超链接
21 0
|
1月前
|
Python
DTL与普通的HTML文件的区别
DTL与普通的HTML文件的区别。
67 5
|
1月前
|
移动开发 前端开发 JavaScript
编程笔记 html5&css&js 005 网页上都有哪内容、形式和操作
编程笔记 html5&css&js 005 网页上都有哪内容、形式和操作
|
2月前
|
API
Poi 中文API文档 「40种操作 Excel文件的姿势」
Poi 中文API文档 「40种操作 Excel文件的姿势」
116 0
N..
|
29天前
|
移动开发 前端开发 JavaScript
HTML文件
HTML文件
N..
13 1
|
30天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
92 3
|
1月前
|
PHP Python
通过html实现文件的上传和下载
通过html实现文件的上传和下载
|
1月前
|
分布式计算 DataWorks 大数据
DataWorks常见问题之使用API删除之前的部署文件失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。