gpt4 book ai didi

javascript - 上传图片时如何在vue组件上自动更新图片?

转载 作者:行者123 更新时间:2023-11-30 20:42:08 25 4
gpt4 key购买 nike

我的 vue 组件是这样的:

<template>
<section>
...
<img class="media-object" :src="baseUrl+'/storage/banner/thumb/'+photo" alt="" width="64" height="64">
...
</section>
</template>
<script>
export default {
props: ['banners'],
data() {
return {
baseUrl: App.baseUrl,
bannerId: this.banners.id,
photo: this.banners.photo // result : chelsea.png
}
},
methods: {
onFileChange(e) {
let files = e.target.files,
reader = new FileReader(),
formData = new FormData(),
self = this

formData.append('file', files[0])
formData.append('banner_id', this.bannerId)

axios.post(window.App.baseUrl+'/admin/banner/upload-image',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function(response) {
if(response.data.status == 'success') {
self.photo = response.data.fileName // result : chelsea.png
}
})
.catch(function(error) {
console.log('FAILURE!!')
})
},
...
}
}
</script>

:src 的结果:\my-app\storage\app\public\banner\thumb\chelsea.png

当我上传图片时,它会调用 onFileChange 方法。并且进程上传将在后端继续。它成功上传到文件夹中。并且响应将返回相同的文件名。所以 response.data.fileName 的结果是 chelsea.png

我的问题是:当我上传图像时,它不会自动更新图像。当我刷新页面时,图像更新了

为什么上传图片时图片没有自动更新/更改?

最佳答案

我通过执行以下操作修复了它,注意我在照片 url 的末尾添加了一个名为 rand 的变量用于缓存清除。当您从服务器获得正确的响应时,只需将该变量更改为唯一的变量(在本例中为时间戳),瞧!您的图像将刷新。

<template>
<img class="media-object" :src="baseUrl+'/storage/banner/thumb/'+photo + '?rand=' + rand" alt="" width="64" height="64">
</template>
<script>
export default {
data() {
return {
rand: 1
}
},
methods: {
onFileChange(e) {
...
axios.post(url,formData).then(function(response) {
if(response.data.status == 'success') {
self.rand = Date.now()
}
})
},
...
}

}

关于javascript - 上传图片时如何在vue组件上自动更新图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com