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

如何用Dart将Blob转换为Appwrite的InputFile

解决方案:Dart中将Blob转换为List用于Appwrite存储

在Dart的Web环境中(依赖dart:html),可以通过FileReader API将Blob转换为List<int>,具体实现如下:

核心代码示例

import 'dart:html';
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/models.dart';

Future<File> uploadBlobToAppwrite(Blob blob, String filename, String bucketId) async {
  // 初始化FileReader读取Blob内容
  final fileReader = FileReader();
  fileReader.readAsArrayBuffer(blob);
  
  // 等待读取完成
  await fileReader.onLoad.first;
  
  // 将读取结果转换为List<int>
  final List<int> fileBytes = fileReader.result as List<int>;
  
  // 创建Appwrite所需的InputFile实例
  final inputFile = InputFile.fromBytes(fileBytes, filename);
  
  // 初始化Appwrite客户端与存储服务
  final client = Client()
    .setEndpoint('https://cloud.appwrite.io/v1') // 替换为你的Appwrite端点
    .setProject('your-project-id'); // 替换为你的项目ID
  
  final storage = Storage(client);
  
  // 上传文件到Appwrite存储
  return await storage.createFile(
    bucketId: bucketId,
    fileId: ID.unique(),
    file: inputFile,
  );
}

关键说明

  • FileReader.readAsArrayBuffer(blob):将Blob内容读取为二进制数组(ArrayBuffer)
  • 读取完成后,fileReader.result可直接类型转换为List<int>,Dart会自动处理ArrayBuffer到List的映射
  • 整个读取操作是异步的,必须使用async/await等待读取完成,否则无法获取完整的二进制数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:02:11