Expo React Native中readAsDataURL生成无效PNG Base64字符串问题
React Native Expo项目PNG转Base64后存储Blob无效问题
我在做一个基于Expo的React Native学生项目,流程如下:
- 通过
DocumentPicker获取图片 - 移动端使用
fetch获取文件Blob,再通过FileReader的readAsDataURL方法转换为Base64字符串;Web端直接使用返回的file.uri(本身就是Base64格式) - 将生成的Base64发送至API,再以Blob形式存储到数据库
目前遇到的问题:JPG/JPEG格式的图片转Base64后能正常存储到数据库,但PNG格式的却无效。想确认这是不是已知问题,或是因为未处理PNG的alpha通道导致的?
排查方向建议
- 验证Base64格式正确性:确认PNG的Base64前缀为
data:image/png;base64,,检查是否存在字符截断、乱码或长度异常的情况 - 排查移动端转换流程:在
fetch获取PNG Blob后打印Blob大小;FileReader读取完成后,对比PNG与JPG的Base64开头部分,查看是否存在差异 - 检查后端处理逻辑:确认API解析PNG Base64转Blob的逻辑是否与JPG一致,是否因alpha通道存在导致解码失败
- 确认DocumentPicker的PNG识别:查看
DocumentPicker返回的PNG文件信息,确认mimeType是否为image/png、文件路径是否正确
内容的提问来源于stack exchange,提问作者groeterud
相关产品推荐
相关产品推荐

