通过前端ajax上传图片到本项目下的static某文件夹。这里图片是上传成功的,成功之后返回该图片路径给前端img标签。
但是这里有个bug,在前端操作功能上传成功后需要点击一下项目,图片才会显示出来。这就导致。如果不切换到Idea图片就不会显示上传到那个文件夹。导致就算把图片路径发给前端了,前端也读取不到。有什么办法解决吗?
按理来说,上传的图片不应该保存到static上(个人觉得),因为这样会给服务器造成压力(图片多了,重新启动服务器,时间可能会久点),可以考虑上传图片到一个其他文件夹下(需要做相应配置),返回相对应的图片路径即可,这样应该没有问题,我就是这样做的。
不知道你这个问题是否已经解决, 如果还没有解决的话:该问题的原因是由于前端无法获取到新上传的图片的路径,导致无法更新图片显示。解决该问题的方法是在上传成功后,将图片路径返回给前端,并在前端使用该路径更新图片显示。下面是详细的解决方案:
在后端的上传图片接口中,将上传成功的图片路径返回给前端。可以使用JSON格式返回,例如:{"success": true, "imageUrl": "/static/uploads/image.jpg"}
。
修改前端代码:
function uploadImage() {
// 获取上传文件的表单数据
var formData = new FormData($("#uploadForm")[0]);
$.ajax({
url: "后端上传图片接口的URL",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function(response) {
// 上传成功后的处理函数
if (response.success) {
// 获取到图片路径
var imageUrl = response.imageUrl;
// 更新图片显示
$("#image").attr("src", imageUrl);
}
},
error: function(xhr, status, error) {
// 错误处理
console.log(error);
}
});
}
<img id="image" src="" alt="Uploaded Image">
这样,在上传成功后,前端就能够获取到新上传图片的路径,并更新图片显示,无需手动刷新页面。
请注意,以上代码只是一个简单的示例,具体实现需要根据你的项目具体情况进行调整和编写。