3
2

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.

LaravelとVue.jsで画像プレビュー

Last updated at Posted at 2020-02-13

プロフィール画像登録時のファイルプレビューを実装してみます。

CDN読み込み

<body>

・・・

<!-- vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</body>

view用意

<div id="file-preview">
  <div class="form-group">
    <label class="form-label" for="photo_id">プロフィール画像</label>
    <input class="form-input" type="file" name="photo_id" accept="image/*" v-on:change="onFileChange">
  </div>
  <img class="userInfo__icon" v-bind:src="imageData" v-if="imageData">
</div>

v-on:change="onFileChange"
以下でjsに記述するonFileChangeメソッドを呼び出します。画像が登録されたら発火。
v-on:@changeとして書けるようですが、省略せず書きたいと思います。

<img class="userInfo__icon" v-bind:src="imageData" v-if="imageData">
imageDataに画像が入って入れば表示。

js

<!-- vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el: '#file-preview',
        data: {
            imageData: '' //画像格納用変数
        },
        methods: {
            onFileChange(e) {
                const files = e.target.files;

                if(files.length > 0) {

                    const file = files[0];
                    const reader = new FileReader();

                    reader.onload = (e) => {
                        this.imageData = e.target.result;

                    };
                    reader.readAsDataURL(file);
                }
            }
        }
    });

</script>
</body>

el=element
data=viewへ渡す変数
methodsに先ほどviewで指定したonFileChangeを定義

fileが登録された段階でFileReaderの呼び出しとimageDataへ画像を格納し、viewにて表示

参考

たった2ステップ!Vue.js で選択画像をプレビューする方法(サンプルDL可)
FileReader.readAsDataURL() - Data URIとして読み込む

3
2
0

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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?