在jQuery中通过AJAX上传文件后刷新图像是一个常见的需求,这涉及到文件上传、服务器处理和前端图像更新三个主要环节。
$('#fileInput').change(function() {
var file = this.files[0];
var formData = new FormData();
formData.append('file', file);
$.ajax({
url: '/upload', // 你的上传接口
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response) {
// 上传成功后刷新图像
refreshImage(response.imageUrl);
},
error: function(xhr, status, error) {
console.error('上传失败:', error);
}
});
});
function refreshImage(imageUrl) {
// 方法1:直接修改img的src属性
$('#previewImage').attr('src', imageUrl + '?' + new Date().getTime());
// 方法2:创建新的Image对象确保加载
var img = new Image();
img.onload = function() {
$('#previewImage').attr('src', imageUrl);
};
img.src = imageUrl + '?' + new Date().getTime();
}
原因:浏览器缓存了相同的URL 解决:在URL后添加随机参数或时间戳
原因:上传接口和当前页面不同源 解决:
原因:服务器或客户端限制 解决:
$.ajax({
// ...其他参数
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener('progress', function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100;
console.log(percentComplete + '%');
}
}, false);
return xhr;
}
});
var formData = new FormData();
$.each($('#fileInput')[0].files, function(i, file) {
formData.append('file-' + i, file);
});
通过以上方法,你可以轻松实现jQuery中上传文件后刷新图像的功能。
没有搜到相关的文章