教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

HTML5应用之文件拖拽上传

来源:网络收集 时间:2026-09-08
导读: HTML5应用之文件拖拽上传 使用HTML5的文件API,可以将操作系统中的文件拖放到浏览器的指定区域,实现文件上传到服务器。本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程,来看下HTML5的魅力吧。 HTML 我们在页面中放置一个拖拽区域#drop_area,即

HTML5应用之文件拖拽上传

使用HTML5的文件API,可以将操作系统中的文件拖放到浏览器的指定区域,实现文件上传到服务器。本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程,来看下HTML5的魅力吧。

HTML

我们在页面中放置一个拖拽区域#drop_area,即接收拖拽的区域,#preview用来预览拖拽上传的图片信息。

<p id="drop_area">将图片拖拽到此区域</p>

<p id="preview"></p>

Javascript

要想实现拖拽,页面需要阻止浏览器默认行为,即四个事件(拖离、拖后放、拖进、拖来拖去),因为我们要阻止浏览器默认将图片打开的行为,这里我们使用jQuery来完成。

$(function(){

//阻止浏览器默认行。

$(document).on({

dragleave:function(e){ //拖离

e.preventDefault();

},

drop:function(e){ //拖后放

e.preventDefault();

},

dragenter:function(e){ //拖进

e.preventDefault();

},

dragover:function(e){ //拖来拖去

e.preventDefault();

}

});

...

});

接下来我们来了解下文件API。HTML5的文件API有一个FileList接口,它可以通过e.dataTransfer.files拖拽事件传递的文件信息,获取本地文件列表信息。

var fileList = e.dataTransfer.files;

使用files 方法将会获取到拖拽文件的数组形势的数据,每个文件占用一个数组的索引,如果该索引不存在文件数据,将返回 null 值。可以通过length属性获取文件数量.

var fileNum = fileList.length;

在本例中,我们用javascript来侦听drop事件,首先要判断拖入的文件是否符合要求,包括图片类型、大小等,然后获取本地图片信息,实现预览,最后上传。

$(function(){

...接上部分

var box = document.getElementById('drop_area'); //拖拽区域

box.addEventListener("drop",function(e){

e.preventDefault(); //取消默认浏览器拖拽效果

var fileList = e.dataTransfer.files; //获取文件对象

//检测是否是拖拽文件到页面的操作

if(fileList.length == 0){

return false;

}

//检测文件是不是图片

if(fileList[0].type.indexOf('image') === -1){

alert("您拖的不是图片!");

return false;

}

//拖拉图片到浏览器,可以实现预览功能

var img = window.webkitURL.createObjectURL(fileList[0]);

var filename = fileList[0].name; //图片名称

var filesize = Math.floor((fileList[0].size)/1024);

if(filesize>500){

alert("上传大小不能超过500K.");

return false;

}

var str = "<img src='"+img+"'><p>图片名称:"+filename+"</p><p>大小:"+filesize+"KB</p>";

$("#preview").html(str);

//上传

xhr = new XMLHttpRequest();

xhr.open("post", "upload.php", true);

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

var fd = new FormData();

fd.append('mypic', fileList[0]);

xhr.send(fd);

},false);

});

我们用FormData模拟表单数据,直接将数据append到formdata对象中,实现了ajax上传。 PHP

upload.php用于接收上传的文件信息,完成上传,实现代码如下:

<?php

$mypic = $_FILES["mypic"];

if(!empty($mypic)){

$picname = $_FILES['mypic']['name'];

$picsize = $_FILES['mypic']['size'];

if ($picsize > 512000) {

echo '图片大小不能超过500k';

exit;

}

$type = strstr($picname, '.');

if ($type != ".gif" && $type != ".jpg") {

echo '图片格式不对!';

exit;

}

$pics = 'helloweba' . $type;

//上传路径

$pic_path = "pics/". $pics;

move_uploaded_file($mypic["tmp_name"],$pic_path);

}

?>

<meta charset="utf-8">

<form action="" method="post" enctype="multipart/form-data">

<input type="file" name="mypic">

<input type="submit" value="上传">

</form>

最后总结下HTML5实现拖拽上传的技术要点:

1、监听拖拽:监听页面元素的拖拽事件,包括:dragenter、dragover、dragleave和drop,一定要将dragover的默认事件取消掉,不然无法触发drop事件。如需拖拽页面里的元素,需要给其添加属性draggable=”true”;

2、获取拖拽文件:在drop事件触发后通过e.dataTransfer.files获取拖拽文件列表,.length属性获取文件数量,.type属性获取文件类型。

3、读取图片数据并添加预览图。

4、发送图片数据:使用FormData模拟表单数据AJAX提交文件流。

…… 此处隐藏:807字,全部文档内容请下载后查看。喜欢就下载吧 ……
HTML5应用之文件拖拽上传.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1729875.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)