1. 程式人生 > >利用拖拽效果實現檔案上傳功能

利用拖拽效果實現檔案上傳功能

1、獲取檔案的方法

file物件是來自使用者在一個<input>表單元素上選擇檔案後返回的filelist物件,也可以是來自自由拖拽操作生成的dataTransfer物件,dataTransfer是拖拽事件物件的屬性。

2、示例程式碼

<body>
	<div id="touxiang"></div>
	<div id="drag"></div>
</body>
<style type="text/css">
		#touxiang{
			width:200px;
			height:200px;
			line-height:200px;
			text-align:center;
			font-size:80px;
			border:1px solid #ccc;
			margin:0 auto;
			position: relative;
		}
		#touxiang:after{
			content:"+";
			color:#ccc;
		}
	#drag{
		width:500px;
		height:350px;
		border:1px dashed #ccc;
		margin:0px auto;
	}
	#touxiang img{
		width:200px;
		height:200px;
		position: absolute;
		top:0;
		left:0;
		z-index:1;
	}
<script type="text/javascript">
		//實現的功能:將檔案拖拽到指定區域後上傳到伺服器,在從伺服器獲得檔案的路徑顯示在頁面的另一個指定區域。
		window.onload=function(){
			var odrag=document.getElementById("drag");
			var touxiang=document.getElementById("touxiang");
			odrag.ondrop=function(e){
				e.preventDefault();//阻止進行拖拽時瀏覽器的預設行為,即自動開啟圖片
				var fileobj=e.dataTransfer.files[0];//通常我們提交(使用submit)時,會把form中的所有表單元素中的name與value組成一個查詢字串,提交到後臺。但當使用ajax提交時,要使用formData物件的append(name,value)方法.
				var formdata=new FormData();
				formdata.append("upload",fileobj);
				var xhr=new XMLHttpRequest();
				xhr.open("post","file1.php");//配置傳送請求
				xhr.onreadystatechange=function(){
					if(xhr.readyState==4){
						if(xhr.status==200){
							var src=xhr.responseText;
							var img=document.createElement("img");
							img.src=src;console.log(src);
							touxiang.appendChild(img);
							odrag.style.display="none";
						}
					}
				};
				xhr.send(formdata);
			}
			odrag.ondragover=function(e){
				e.preventDefault();//阻止進行拖拽時瀏覽器的預設行為,即自動開啟圖片
			}		
		};
	</script>
header("Content-type:text/html;charset=utf8");
	if(isset($_FILES["upload"]["name"])){
		if(is_uploaded_file($_FILES["upload"]["tmp_name"])){
			move_uploaded_file($_FILES["upload"]["tmp_name"],"./files/".$_FILES["upload"]["name"]);
			echo "./files/".$_FILES["upload"]["name"];
		}
	}