FileReader读取文件后为什么图片不显示?
我用FileReader读取用户上传的图片,但预览区域一直空白,控制台也没报错,到底是哪出问题了?
我试过在onload回调里把result赋值给img的src,但就是不显示。HTML结构是这样的:
<input type="file" id="fileInput" accept="image/*">
<img id="preview" src="" alt="预览图" style="max-width: 300px;">
<script>
document.getElementById('fileInput').addEventListener('change', function(e) {
const file = e.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = () => {
document.getElementById('preview').src = reader.result;
};
reader.readAsDataURL(file);
}
});
</script>
onload事件绑定上。你直接用箭头函数没问题,但最好确保reader.result确实有值。拿去改改:
另外提醒一下,有些浏览器对大文件可能会有问题,如果图片还是不显示,试试用小一点的图片测试。这个方案在我自己项目里用过,一般都能解决问题。
首先检查下图片是不是真的加载成功了。在
reader.onload里加个console.log看看reader.result是不是确实有值,格式应该是data:image/jpeg;base64,...这样的。更健壮的写法可以这样:
常见问题排查点:
1. 文件类型是不是图片?加个类型检查更保险
2. 文件是不是太大?可以试试小尺寸图片
3. 图片元素是不是被CSS隐藏了?检查下display和visibility属性
如果还不行,可能是浏览器缓存问题,试试在src后面加个时间戳:
img.src = event.target.result + '?' + Date.now()