SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【JavaScript】ブラウザ画面にドラッグ&ドロップされた画像をimg要素で表示する

問題

エクスプローラーなどからドラッグ&ドロップした画像をJavaScriptで取得したいです。

画像

答え

HTML

<div id="target" style="border: solid 5px #ccc; padding:2em; text-align:center;">
	ここに画像ファイルをドロップします。
</div>

<img id="preview">

JavaScript

var target = document.getElementById('target');
target.addEventListener('dragover', function (e) {
	e.preventDefault();
	e.stopPropagation();
	e.dataTransfer.dropEffect = 'copy';
});
target.addEventListener('drop', function (e) {
	e.stopPropagation();
	e.preventDefault();
	const reader = new FileReader();
	reader.onload = function (e) {
		document.getElementById('preview').src = e.target.result;
	}
	reader.readAsDataURL(e.dataTransfer.files[0]);
});

DEMO

ここに画像ファイルをドロップします。

メモ

JavaScriptをjQueryで書く場合、dropイベントなどを取得するために、e.originalEvent を使う必要がある。

$('target').on("drop", function(_e){
	var e = _e;
	if( _e.originalEvent ){
	    e = _e.originalEvent;
	}
	e.stopPropagation();
	e.preventDefault();

	//以下略

関連するメモ

コメント