画像ファイルの場合、追加して表示します。
サンプル
◆html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File API Sample (onDrop)</title>
<script src="onDrop.js"></script>
<style>
html,body {
margin: 0px;
padding: 0px;
height: 100%;
}
#drop img {
height: 75px;
border: 1px solid #000;
margin: 10px 5px 0 0;
float: left;
}
</style>
</head>
<body>
<div>下にファイルをドロップしてください。ファイルを表示します。</div>
<div id="drop" style="width:95%; height:90%;" ondragover="onDragOver(event)">
</div>
</body>
</html>
◆javascript(FileInput.js)
25-31行目:ファイルが画像の場合の処理(height=75pxの大きさで画像を表示)34-39行目:ファイルが画像以外の場合の処理(テキストを表示)
window.onload = function() {
if (window.File) {
// File APIに関する処理を記述
// window.alert("File APIが実装されてます。");
document.getElementById("drop").addEventListener("drop", onDrop, false);
} else {
window.alert("本ブラウザではFile APIが使えません");
}
}
// Drop領域にドロップした際のファイルのプロパティ情報読み取り処理
function onDrop(event){
var files = event.dataTransfer.files;
var drop = document.getElementById("drop");
// ファイルの配列から1つずつファイルを選択
for(var i=0; i< files.length; i++){
var f = files[i];
// FileReaderオブジェクトの生成
var reader = new FileReader();
// エラー発生時の処理
reader.onerror = function (evt) {
drop.innerHTML = "読み取り時にエラーが発生しました。";
}
if (f.type.match('image.*')) {
reader.onload = function (evt) {
var img = document.createElement('img');
img.src = evt.target.result;
document.getElementById("drop").appendChild(img);
}
// readAsDataURLメソッドでファイルの内容を取得
reader.readAsDataURL(f);
} else {
// ファイル読取が完了した際に呼ばれる処理
reader.onload = function (evt) {
var content = reader.result.replace(/</g,'<')
drop.innerHTML = content;
}
// readAsTextメソッドでファイルの内容を取得
reader.readAsText(f);
}
}
// ブラウザ上でファイルを展開する挙動を抑止
event.preventDefault();
}
function onDragOver(event){
// ブラウザ上でファイルを展開する挙動を抑止
event.preventDefault();
}
参考にしたページ
以上