• 故事中美两军举行人道主义救援减灾联合实兵演练 2019-08-13
  • 掌握新思想 开拓新实践——深入贯彻落实党的十九大精神系列述评之二 2019-07-30
  • “草原英雄小姐妹”走进山城 2019-07-01
  • 高清:里约奥运会奖牌曝光 大部分由再生材料制成 2019-06-27
  • 在楼主大谈共产主义分配的时候,希望楼主先说明一下对马克思关于共产主义基本原则的理解。一个社会如果仍然存在“按劳动分配”,怎么会是“每一个个人的全面而自由的发展” 2019-06-25
  • 河北法院:打造互联网+诉非衔接的人民法庭工作新机制 2019-06-25
  • 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 欢迎访问

    浙江双色球走势图2:云南鼎浩信息技术有限公司官方网站,云南网站建设诚信品牌!

    DING HAO COLUMN 鼎浩专栏

    鼎浩的一些分享
    Sharing from Ding Hao

    HTML5应用之文件拖拽上传

    来源:云南11选五走势图500期     2013年07月02日16:02
    字号:T|T

    云南11选五走势图500期 www.a-mcl.com 使用HTML5的文件API,可以将操作系统中的文件拖放到浏览器的指定区域,实现文件上传到服务器。本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程,来看下HTML5的魅力吧。


    HTML

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

    将图片拖拽到此区域

    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 值??梢酝ü齦ength属性获取文件数量.

    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 = "
    

    图片名称:"+filename+"

    大?。?+filesize+"KB

    "; $("#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用于接收上传的文件信息,完成上传,实现代码如下:

     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);
    }
    ?>

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

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

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

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

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

    客服中心
    点击进行在线咨询

    QQ咨询 咨询QQ:79929313 咨询QQ:88139574 咨询QQ:122790803

    咨询热线:0871-63399840

    客服热线:0871-63523332

    客服中心 客服中心
  • 故事中美两军举行人道主义救援减灾联合实兵演练 2019-08-13
  • 掌握新思想 开拓新实践——深入贯彻落实党的十九大精神系列述评之二 2019-07-30
  • “草原英雄小姐妹”走进山城 2019-07-01
  • 高清:里约奥运会奖牌曝光 大部分由再生材料制成 2019-06-27
  • 在楼主大谈共产主义分配的时候,希望楼主先说明一下对马克思关于共产主义基本原则的理解。一个社会如果仍然存在“按劳动分配”,怎么会是“每一个个人的全面而自由的发展” 2019-06-25
  • 河北法院:打造互联网+诉非衔接的人民法庭工作新机制 2019-06-25
  • 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 购买自动麻将机 河北11选五开奖最近结果 江西11选五走势图彩经网 四川快乐12一定牛结果 任选9场胜负复式怎么算 中国足彩网网上购彩 福彩七乐彩走势图综合版 德甲士清洁有什么成分 福彩走势图网易彩票 7乐彩复式投注表 新疆时时彩万能七码 内蒙古快三走势图开奖 广西新11选5走势图 133期四肖中特 北京pk10赛车网上投注