我有一个项目,用户可以上传图像,并将图像存储在MongoDB数据库中。每当上传新的图片时,我该如何更新页面上一个div的背景图片,而不需要刷新页面?我尝试了删除背景图片并重新添加它,但似乎没有起作用:
function updateLogo() {
console.log("update");
$("#chain-logo").css("background-image", "none");
$("#chain-logo").css("background-image", `url("/api/images/chain/${chainId}")`);
}
以下是将图像发送到服务器并调用updateLogo的代码:
function uploadLogo() {
let file = document.getElementById("logo-input").files[0];
let formData = new FormData();
formData.append("logo", file);
fetch(`/chain/${chainId}/upload/logo`, {
method: "POST",
body: formData
})
.then(response => response.json())
.then(data => {
updateLogo();
});
}
页面的HTML:
<body>
<div id="header-container"></div>
<div id="administrator-message-banner">
<p></p>
</div>
<div id="chain-logo-container">
<input type="file" id="logo-input" accept=".png,.svg,.jpeg,.gif,.jpg,.txt" />
<div id="chain-logo"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="/public/js/chain.js"></script>
</body>
的CSS样式:
#chain-logo {
border-radius: 20px;
height: 200px;
width: 260px;
background-image: url("/public/images/chain-default.svg");
background-size: 260px 200px;
}
ImageElement.src = URL.createObjectURL(file);
的解决方案来替换你的updateLogo()
。当然,你需要创建一个条件,使用一个更高级别的变量,以防止在上一个上传完成之前进行另一个上传。或者,如果图像已上传到服务器并且你有一个实际的URL,并且你可能正在使用相同的URL,则在服务器上向GET URL的末尾添加一些内容,例如'imagename.png?q='.uniqid('', true);
。 - StackSlave