jQueryでファイル選択時にプレビュー表示する方法

jQueryでファイル選択時にプレビュー表示する方法

Posted at July 6,2016 12:03 AM
Tag:[jQuery]
  • Hatena ブックマーク
  • del.icio.us
  • livedoor
  • Google Bookmarks
  • Yahoo!ブックマーク
  • POOKMARK Airlines
  • ニフティクリップ
  • Buzzurl
  • newsing it!

jQueryでファイル選択時にプレビュー表示する方法を紹介します。

1.はじめに

フォームのファイル選択で画像を選択したときに画像のプレビューを表示したい場合があると思います。

ということで、jQueryを使って画像をプレビュー表示する方法を紹介します。

2.ファイル選択時にプレビュー表示する

まず、下記のファイル選択フォームを用意します。

<form>
    <input type="file" id="file" />
</form>
<div id="result"></div>

そして次のjQueryを追加します。

<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<script>
$(function(){
    $('#file').change(function(){
        $('img').remove();
        var file = $(this).prop('files')[0];
        if(!file.type.match('image.*')){
            return;
        }
        var fileReader = new FileReader();
        fileReader.onloadend = function() {
            $('#result').html('<img src="' + fileReader.result + '"/>');
        }
        fileReader.readAsDataURL(file);
    });
});
</script>

3.解説

ファイルが選択されたときに下記のchange()が起動します。

$('#file').change(function(){
    //...
}

img要素を一旦削除します(繰り返し実施する場合を想定)。

$('img').remove();

選択したファイルのオブジェクトを取得します。

var file = $(this).prop('files')[0];

ファイルタイプが画像でない場合は処理を終了します。

if(!file.type.match('image.*')){
    return;
}

FileReaderのreadAsDataURLメソッドで指定したFileオブジェクト(さきほどのfile)を読み込みます。

var fileReader = new FileReader();
 :
fileReader.readAsDataURL(file);

読込処理が終了するとloadendイベントが生じ、resultプロパティにbase64エンコーディングされた "data: URL" 文字列(ファイルのデータ)が格納されるので、このタイミングでimg要素を生成します。src属性にはbase64エンコーディングされたデータを指定します。

fileReader.onloadend = function() {
    $('#result').html('<img src="' + fileReader.result + '"/>');
}
関連記事
トラックバックURL


コメントする
コメントするにはまずサインインしてください。
Loading...