sample: detect dropped image properties via FileReader object

by sii_side

HTML

<div id="bbb"></div>

CSS

#bbb {
  width: 200px;
  height: 200px;
  background-color: #fcc;
}

JavaScript

var element = document.getElementById("bbb");

element.addEventListener("dragover", function(e) {
  e.preventDefault();
});

element.addEventListener("drop", function(e) {
  e.preventDefault();
	e.stopPropagation();

	var data_transfer = e.dataTransfer;

  var file_list = data_transfer.files;
  if (!file_list) return;

  var i;
  var num = file_list.length;
  for (i = 0; i < num; i++) {
    var file = file_list[i];

		//ドラッグ&ドロップされたファイルを実際に読み込むためのオブジェクト
		var fr = new FileReader();
    
    //ファイル読み込み完了時のイベントリスナ
    fr.addEventListener("load", function(e) {
    	var img = new Image();
      
      //さらに画像としての読み込みを待機
      //(ここは場合によって不要かもしれませんが、念のため)
      img.addEventListener("load", function() {
      	console.log(img.width);
        console.log(img.height);
      });

			//DataURLをsrcにセットする
			img.src = e.target.result;
    }, false);
    
    //1ファイル読み込み開始
		fr.readAsDataURL(file);
  }
});