【发布时间】:2020-09-15 09:49:30
【问题描述】:
我正在尝试为头像构建一个图像预览系统:
<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>
在我的代码中,用户计算的属性从 vuex 返回一个 JSON 对象,该对象从本地存储中获取对象。
不断发生的情况是,当我刷新更改个人资料图像的页面时,默认图像不会显示。该元素在 chrome devtools 中如下所示:
<img width="50" height="50" class="mr-1">
当我打开 vue 开发工具时,点击这个功能所在的组件,图像 src 被添加:
<img width="50" height="50" class="mr-1" src="http://127.0.0.1:8000/storage/avatars/default.png">
【问题讨论】: