问题背景:
在上传了文件(图片类)后,需要img图片预览
解决方案:
1.依赖后端的话,可以在上传结束之后请求接口获取文件url给到img来做渲染,此操作需要依赖后端服务
2.前端自解决分又分不同场景
2.1 将上传文件转为base64用于图片的加载,file转base64代码如下
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file) // 此处需特别注意 确保传入参数为file类型 否则会报Failed to execute ‘readAsArrayBuffer’ on ‘FileReader’: parameter 1 is not of type ‘Blob’
reader.onload = () => resolve(reader.result)
reader.onerror = error => reject(error)
})
}
实际使用 react + antd下(antd的file对象存放在originFileObj中)
elementUI中有说是放在对应的file.raw中
原生input标签有说是可以直接获取file本身
此部分差异一定注意
2.2 可将file转为本地的url(此部分所做尝试未成功,待后续完善)