Я пытаюсь создать систему предварительного просмотра изображений для аватара:
<template>
<div>
<div class="level">
<img :src="avatar" width="50" height="50" class="mr-1">
</div>
<form method="POST" enctype="multipart/form-data">
<input type="file" accept="image/*" @change="onChange">
</form>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
avatar: null,
setAuthHeader: axios.defaults.headers.common['Authorization'] = 'Bearer ' + this.$store.state.token,
};
},
computed: {
user() {
return this.$store.state.user
},
avatar_path() {
this.avatar = this.user.avatar_path
},
},
methods: {
onChange(e) {
if (! e.target.files.length) return;
let file = e.target.files[0];
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = e => {
this.avatar = e.target.result;
this.persist(file);
};
},
persist(avatar) {
let data = new FormData();
data.append('avatar', avatar);
this.setAuthHeader;
axios.post(`/settings/avatar`, data)
.then(() => flash('Avatar uploaded!'));
}
}
}
</script>
В моем коде свойство, вычисленное пользователем, возвращает объект JSON из vuex, который получает объект из локального расположения.
Продолжает происходить то, что когда я обновляю sh страницу, которая меняет изображение профиля, изображение по умолчанию не отображается. В chrome devtools элемент выглядит следующим образом:
<img width="50" height="50" class="mr-1">
Когда я открываю vue инструменты разработчика, щелкните компонент, в котором находится эта функция, изображение sr c добавляется:
<img width="50" height="50" class="mr-1" src="http://127.0.0.1:8000/storage/avatars/default.png">