90
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コピペでOK!アップロードした画像を即座にブラウザに反映しよう

Last updated at Posted at 2020-01-30

はじめに

画像をアップロードしたら即座に画像のプレビューが見たいときってありますよね。でもAjaxを導入したりするのは面倒。そんなときにすぐ使えるよう、htmlにコピペで実装できるようにしました。

[Before]
before2.gif

[After]
after.gif

仕組み

アップロードしたら、画像ファイルをbase64文字列化して、src属性に代入しているだけです。

ソースコード

sample.html
    <img id="image" style="display: none;" />  <!-- 画像表示する場所-->
    <input id="file_upload" type="file" /> <!-- 画像をアップロード -->

    <script>
      document.getElementById("file_upload").addEventListener("change", selectedFile, false);

      function selectedFile(event) {
        let files = event.target.files || event.dataTransfer.files;
        showImage(files[0]);
      }

      function showImage(imagedata) {
        let file = imagedata;
        let fileReader = new FileReader();

        // 読み込み完了時の処理を追加
        fileReader.onload = function() {
          const url = this.result;
          const image = document.getElementById("image");
          image.style.display = "block"; // display:none;を上書き
          image.src = url;
        };
        // ファイルの読み込み(Data URI Schemeの取得)
        fileReader.readAsDataURL(file); //画像表示
      }
    </script>
90
74
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
90
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?