(2018年追記: 自分で必要になって見返してみて、古い記事だけどまだ内容は大丈夫でした。)
サンプル
ブラウザーでファイルを開かないようにする
- 受け付けたい要素の
dragover
イベントとdrop
イベントを監視する。 - それぞれで
event.preventDefault()
する。
ファイルをドラッグしてきたら見た目を変える
- 要素のクラスをon/offする場合。
-
dragover
でonにする。 -
dragleave
とdrop
でoffにする。
ドロップされたファイルの情報を取得する
-
drop
イベントのevent.dataTransfer.files
にファイル情報が入る。 - 形式は
File
オブジェクトの配列。 -
File
オブジェクト:name
size
-
type
… (ex:"image/png"
)
ドロップされたものが画像であるか判別する
-
File
オブジェクトのtype
を確認する。 -
type.indexOf('image/')===0
なら画像。
画像だったら表示する
-
File
オブジェクトからFileReader
オブジェクトのreadAsDataURL()
メソッドを使って読み込む。 - 読み込み成功すると
load
イベントが発火し、そのevent.target.result
に画像のData-URIが格納されている。