ホームページ >ウェブフロントエンド >H5 チュートリアル >HTML5 jsでドラッグ&ドロップによるファイルアップロード機能を実装

HTML5 jsでドラッグ&ドロップによるファイルアップロード機能を実装

高洛峰
高洛峰オリジナル
2017-01-12 17:09:201511ブラウズ

HTML5 PC には多くの機能が実装されており、ドラッグ アンド ドロップによるアップロードもこの作品で使用されています。

ドラッグ ターゲットでイベント (ソース要素) をトリガーします:

ondragstart -ユーザーがドラッグを開始する 要素がドラッグされているときにトリガーされます
ondrag - 要素がドラッグされているときにトリガーされます
ondragend - ユーザーが要素のドラッグを完​​了した後にトリガーされます

ターゲットが解放されたときにトリガーされるイベント:

ondragenter - ターゲットが解放されたときにトリガーされますマウスでドラッグされているオブジェクトがそのコンテナ範囲に入ります このイベント
ondragover - このイベントは、ドラッグされたオブジェクトが別のオブジェクトのコンテナ範囲内にドラッグされるとトリガーされます
ondragleave - このイベントは、マウスでドラッグされているオブジェクトがそのコンテナーから離れるとトリガーされますrange
ondrop - このイベントは、ドラッグされたオブジェクトが別のオブジェクトのコンテナ範囲内にドラッグされたときにトリガーされます。アニメーション中に、マウス ボタンが離されたときにこのイベントがトリガーされます。

コードをアップロードする

<html>
<head>
  <meta charset="UTF-8">
  <title>拖拽</title>
  <style>
    .box{width:800px;height:600px;float:left;}
    #box1{background-color:#ccc;}
    #box2{background-color:#000;}
  </style>
</head>
<body>
  <div id="box1"></div>
  <div id="box2"></div>
  <img id="img1" src="1.jpg">
  <div id="msg"></div>
</body>
<script>
var box1Div,box2Div,msgDiv,img1; 
window.onload = function(){
  box1Div = document.getElementById(&#39;box1&#39;);
  box2Div = document.getElementById(&#39;box2&#39;);
  msgDiv = document.getElementById(&#39;msg&#39;);
  img1 = document.getElementById(&#39;img1&#39;);
  box1Div.ondragover = function(e){e.preventDefault();}
  box2Div.ondragover = function(e){e.preventDefault();}
 
  img1.ondragstart = function(e){e.dataTransfer.setData(&#39;imgId&#39;,&#39;img1&#39;);}
  box1Div.ondrop = dropImghandler;
  box2Div.ondrop = dropImghandler;
}
function dropImghandler(e){
  showObj(e);//获取拖放所有信息
  showObj(e.dataTransfer);//获取文件
  e.preventDefault();
  var img = document.getElementById(e.dataTransfer.getData(&#39;imgId&#39;));
  e.target.appendChild(img);
}
function showObj(obj){
  var s = &#39;&#39;;
  for(var k in obj){s += k+":"+obj[k]+"<br/>";}
  msgDiv.innerHTML = s;
}
</script>
</html>

この関数は、次のメソッドです。画像を左右のdivにドラッグしてください。これはHarbin Beerとして使用できます
以下はドラッグアンドドロップでアップロードしたコードで、バックエンドPHPが$_FILESを取得した後、起動できます

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>拖放上传</title>
  <style>
    #imgContainer{background:#ccc;width:500px;height:500px;}
  </style>
</head>
<body>
  <div id="imgContainer"></div>
  <div id="msg"></div>
</body>
<script>
var imgContainer,msgDiv;
window.onload = function(e){
  imgContainer = document.getElementById(&#39;imgContainer&#39;);
  msgDiv = document.getElementById(&#39;msg&#39;);
  imgContainer.ondragover = function(e){
    e.preventDefault();
  }
  imgContainer.ondrop = function(e){
    e.preventDefault();
    var f = e.dataTransfer.files[0];  
    //这时已经获取到文件了,具体想要用第几个文件自己处理,发post请求后端处理就行了!
 
    //下面是图片获取到之后显示在imgContainer中的流程
    // var fileReader = new FileReader();
    // fileReader.onload=function(){
    // imgContainer.innerHTML = "<img src=\""+fileReader.result+"\">"
    // }
    // fileReader.readAsDataURL(f);
    // showObj(e);  //显示上传信息
    // showObj(e.dataTransfer.files);
  }
}
function showObj(obj){
  var s = &#39;&#39;;
  for(var k in obj){s += k+":"+obj[k]+"<br/>";}
  msgDiv.innerHTML = s;
}
</script>
</html>

以上がこの記事の全内容です。皆様の学習に役立つことを願っております。また、皆様にも PHP 中国語 Web サイトをサポートしていただければ幸いです。

ドラッグ アンド ドロップ ファイル アップロード機能の HTML5 js 実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。