File APIとDrag and Drop APIを使用して、ドラッグ&ドロップしたファイルのサムネイルと情報を表示してみます。
サンプルコード
HTML
<div id="dropArea">画像ファイルをドラッグ&ドロップ</div> <div id="thumb">ここにサムネイルを表示します。</div>
CSS
#dropArea { width: 400px; padding: 100px; background: #eee; text-align: center; } #thumb img { max-width: 300px; }
JavaScript
// File APIに対応しているか確認 if(window.File) { var dropArea = document.getElementById('dropArea'); var thumb = document.getElementById('thumb'); // エリア内にドラッグされたとき dropArea.addEventListener('dragover', function(e) { // ブラウザ上でファイルを開かないようにしておく e.stopPropagation(); e.preventDefault(); }, false); // エリア内にドロップされたとき dropArea.addEventListener('drop', function(e) { // ブラウザ上でファイルを開かないようにしておく e.stopPropagation(); e.preventDefault(); // ファイルの情報を取得 var fileData = e.dataTransfer.files; for (var i = 0; i < fileData.length; i++) { var file = fileData[i]; // 選択されたファイルが画像かどうか確認 if(!file.type.match(/^image/)) { alert('画像を選択してください'); return; } var reader = new FileReader(); // ファイル読み取りに失敗したとき reader.onerror = function() { alert('ファイル読み取りに失敗しました') } // ファイル読み取りに成功したとき reader.onload = function(ev) { var div = document.createElement('div'); var insert = '<img src="' + ev.target.result + '"><br>'; insert += 'filename: ' + file.name + '<br>'; insert += 'filesize: ' + file.size; div.innerHTML = insert; thumb.appendChild(div); } // ファイル読み取りを実行 reader.readAsDataURL(file); } }, false); }
【参考サイト】
- JavaScript でのローカル ファイルの読み込み – HTML5 Rocks
- 連載:人気順に説明する初めてのHTML5開発:JavaScriptでファイル操作!? File APIを使いこなそう (1/2) – @IT
コメントが承認されるまで時間がかかります。