画像ファイルの場合、追加して表示します。
サンプル
◆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();
- }
参考にしたページ
以上