H5中的拖拽文件上传

一:介绍

1.内容摘要

  

2.主要设计的技术

  

3.drag与drop事件

  

4.drag与drop的部分重要代码

  

5.File Api

  

6.formData

  

二:程序演示

1.

  1 <!DOCTYPE HTML>
  2 <html>
  3 <head>
  4 <meta charset="utf-8">
  5 <title>无标题文档</title>
  6 <script src="D:\jquery\jquery-1.12.4.min.js"></script>
  7 <style>
  8 .dashboard_target_box {
  9     width:250px;
 10     height:105px;
 11     border:3px dashed #E5E5E5;
 12     text-align:center;
 13     position:absolute;
 14     z-index:2000;
 15     top:0;
 16     left:0;
 17     cursor:pointer
 18 }
 19 .dashboard_target_box.over {
 20     border:3px dashed #000;
 21     background:#ffa
 22 }
 23 .dashboard_target_messages_container {
 24     display:inline-block;
 25     margin:12px 0 0;
 26     position:relative;
 27     text-align:center;
 28     height:44px;
 29     overflow:hidden;
 30     z-index:2000
 31 }
 32 .dashboard_target_box_message {
 33     position:relative;
 34     margin:4px auto;
 35     font:15px/18px helvetica, arial, sans-serif;
 36     font-size:15px;
 37     color:#999;
 38     font-weight:normal;
 39     width:150px;
 40     line-height:20px
 41 }
 42 .dashboard_target_box.over #dtb-msg1 {
 43     color:#000;
 44     font-weight:bold
 45 }
 46 .dashboard_target_box.over #dtb-msg3 {
 47     color:#ffa;
 48     border-color:#ffa
 49 }
 50 #dtb-msg2 {
 51     color:orange
 52 }
 53 #dtb-msg3 {
 54     display:block;
 55     border-top:1px #EEE dotted;
 56     padding:8px 24px
 57 }
 58 </style>
 59 <script>
 60 $(document).ready(function(){
 61
 62    //设计一段比较流行的滑动样式
 63         $(‘#drop_zone_home‘).hover(function(){
 64             $(this).children(‘p‘).stop().animate({top:‘0px‘},200);
 65         },function(){
 66             $(this).children(‘p‘).stop().animate({top:‘-44px‘},200);
 67         });
 68
 69
 70         //要想实现拖拽,首页需要阻止浏览器默认行为,一个四个事件。
 71         $(document).on({
 72             dragleave:function(e){        //拖离
 73                 e.preventDefault();
 74                 $(‘.dashboard_target_box‘).removeClass(‘over‘);
 75             },
 76             drop:function(e){            //拖后放
 77                 e.preventDefault();
 78             },
 79             dragenter:function(e){        //拖进
 80                 e.preventDefault();
 81                 $(‘.dashboard_target_box‘).addClass(‘over‘);
 82             },
 83             dragover:function(e){        //拖来拖去
 84                 e.preventDefault();
 85                 $(‘.dashboard_target_box‘).addClass(‘over‘);
 86             }
 87         });
 88
 89         //================上传的实现
 90         var box = document.getElementById(‘target_box‘); //获得到框体
 91
 92           box.addEventListener("drop",function(e){
 93
 94             e.preventDefault(); //取消默认浏览器拖拽效果
 95
 96             var fileList = e.dataTransfer.files; //获取文件对象
 97             //fileList.length 用来获取文件的长度(其实是获得文件数量)
 98
 99             //检测是否是拖拽文件到页面的操作
100             if(fileList.length == 0){
101                 $(‘.dashboard_target_box‘).removeClass(‘over‘);
102                 return;
103             }
104             //检测文件是不是图片
105             if(fileList[0].type.indexOf(‘image‘) === -1){
106                 $(‘.dashboard_target_box‘).removeClass(‘over‘);
107                 return;
108             }
109
110             //var img = window.webkitURL.createObjectURL(fileList[0]);
111             //拖拉图片到浏览器,可以实现预览功能
112
113             xhr = new XMLHttpRequest();
114             xhr.open("post", "test.php", true);
115             xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
116
117             var fd = new FormData();
118             fd.append(‘ff‘, fileList[0]);
119
120             xhr.send(fd);
121
122
123         },false);
124
125 });
126 </script>
127 </head>
128
129 <body>
130 <div id="target_box" class="dashboard_target_box">
131   <div id="drop_zone_home" class="dashboard_target_messages_container">
132     <p id="dtb-msg2" class="dashboard_target_box_message" style="top:-44px">选择你的图片<br>
133       开始上传</p>
134     <p id="dtb-msg1" class="dashboard_target_box_message" style="top:-44px">拖动图片到<br>
135       这里</p>
136     </p>
137   </div>
138 </div>
139 </body>
140 </html>

2.test.php

 1 <?php
 2 if(!empty($_FILES["ff"])){
 3 move_uploaded_file($_FILES["ff"]["tmp_name"],$_FILES["ff"]["name"]);
 4 }
 5 ?>
 6 <meta charset="utf-8">
 7 <form action="" method="post" enctype="multipart/form-data">
 8 <input type="file" name="ff">
 9 <input type="submit" value="上传">
10 </form> 
时间: 2024-10-13 08:54:07

H5中的拖拽文件上传的相关文章

HTML5开发 拖拽文件上传

Drag&Drop 拖拽功能的处理 关于HTML5拖拽文件上传,其实国外已经有很多网站有这样的应用,最早推出拖拽上传应用的是 Gmail,它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送,但其实现在利用HTML5的功能实现,主要借助于新版支持的浏览器来实现,IE还是弱很多. 拖拽上传应用主要使用了以下 HTML5技术: Drag&Drop : HTML5基于拖拽的事件机制.File API : 可以很方便的让 Web 应用访问文件对象,File API 包括FileList.Bl

Java实现HTML5拖拽文件上传

这是主页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+reques

File杂谈——拖拽异步上传实现

在前一篇文章<File杂谈--拖拽上传前传>中我制作了一个静态的拖拽上传界面,拖拽文件到显示区域释放,可以显示拖入文件的基本信息.本文将在此基础上进一步加工,打造一个完整的拖拽上传示例. 示例说明 点击区域选择文件或直接将文件拖入区域,触发文件上传功能,文件将异步发送到服务器.待服务端处理完成后返回基本信息,在页面中显示.由于服务器容量问题,本示例未做文件保存处理,只是简单的将文件基本信息返回,文件上传的后端具体处理逻辑需要自行补充. 新的小伙伴FormData 我们知道,传统的文件上传如果要

JAVA中使用FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保([email protected])创建 * @param url FTP服务器hostname

Android中自定义MultipartEntity实现文件上传以及使用Volley库实现文件上传

最近在参加CSDN博客之星,希望大家给投一票,谢谢啦~                       点这里投我一票吧~ 前言 在开发当中,我们常常需要实现文件上传,比较常见的就是图片上传,比如修改个头像什么的.但是这个功能在Android和iOS中都没有默认的实现类,对于Android我们可以使用Apache提供的HttpClient.jar来实现这个功能,其中依赖的类就是Apache的httpmime.jar中的MultipartEntity这个类.我就是要实现一个文件上传功能,但是我还得下载

h5 input file ajax实现文件上传

<input type="file" accept="image/*" height="0" class="file_input" id="file_input_ss_0" multiple>  文件域 遇到的几个BUG 已经解决 1 多选文件域,如果没有上传成功或已上传成功,再次点击文件域名选择图片时,会累积上次的文件. 例如 第一次上传1.jpg  第二次点击上传 2.jpg 第二次的上传结

android 在webview中填充网站的文件上传的文件路径

网站中有一个编辑框,要求输入上传的文件路径,如果需要自动填充, 不能 使用: webView.loadUrl("javascript:setPhoto('"+ Uri.fromFile(new File(com.yiheng.xmb.Constant.PHOTOIMAGECROP)) + "')"); 和 javascript:setPhoto('/mnt/sdcard/fffff') 可以使用:ContentProvide 把这个"content://y

Servlet3.0中使用getPart进行文件上传

这个先进些,简单些,但书上提供的例子不能使用,到处弄了弄才行. servlet代码: package cc.openhome; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.io.File; import java.io.IOException; import ja

Servlet中使用getInputStream进行文件上传

据说古老了点,所以代码比较繁琐,主要用于处理文件的地方太多. 下节用SERVLET3.0的Part进行操作一下. form.html: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html ;charset=UTF-8"> </head> <body> <form method=&q