You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web调用readAsBytes报_Namespace异常,Firebase Storage图片上传失败

Flutter Web 上传图片到Firebase Storage 崩溃问题解决

问题原因

Flutter Web环境下,image_picker返回的XFile的path字段并非真实的本地文件路径(受浏览器安全机制限制),因此通过File(XFile.path)创建的dart:io.File对象无法正常读取文件内容,调用readAsBytes()时会触发Unsupported operation: _Namespace错误。而Android端因为可以直接访问本地文件系统,所以该逻辑能正常运行。

修复后的代码

直接通过XFile自带的readAsBytes()方法获取图片字节数据,无需转换为File对象:

final pickedFiles = await imgPicker.pickMultiImage();
if (pickedFiles != null && pickedFiles.isNotEmpty) {
  for (int i = 0; i < pickedFiles.length; i++) {
    final Reference storageRef = FirebaseStorage.instance
        .ref()
        .child('images')
        .child('$i.jpeg');
    // 直接从XFile读取字节数据
    final imageBytes = await pickedFiles[i].readAsBytes();
    await storageRef.putData(imageBytes);
  }
}

额外说明

  • 移除了不必要的XFile转File的步骤,避免Web环境下的API不兼容问题
  • 增加了pickedFiles != null的空判断,提升代码健壮性
  • 该逻辑同时兼容Android和Web平台,无需额外的平台分支处理

内容的提问来源于stack exchange,提问作者Adam B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:56:10