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

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

Posted at July 6,2016 12:03 AM
Tag:[jQuery]

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


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)