使用firebase存储文件上传文件失败时出现错误

时间:2018-05-18 11:55:59

标签: firebase dart flutter firebase-storage

我正在努力为用户上传到firebase存储但不具备互联网连接的必然性做好准备。目前,如果我使用以下内容并关闭所有互联网连接,它永远不会到达catchError它只是等待并在连接回来时打印dowloadUrl。

  FirebaseStorage.instance.setMaxOperationRetryTimeMillis(10);
  final StorageReference ref = FirebaseStorage.instance.ref().child("AllUsers").child(uuid).child(fileName);
  final StorageUploadTask uploadTask = ref.putFile(image, const StorageMetadata(contentLanguage: "en"));
  Uri downloadUrl;
  await uploadTask.future.then( (UploadTaskSnapshot snapshot) {
    downloadUrl = snapshot.downloadUrl;
    print(downloadUrl)
  }).catchError((error) {
    print(error);
  });

这是否意味着我不必担心缓存每张图片以便稍后上传并且正在处理?我假设没有,但那会很棒。

更新

添加此而不是then catch:

  try {
    downloadUrl = (await uploadTask.future).downloadUrl;
    print("$downloadUrl");
  } catch (error) {
    print(error);
  }

在请求后没有拨打电话。

更新2:

尝试添加以下内容:

  FirebaseStorage.instance.setMaxUploadRetryTimeMillis(10);
  FirebaseStorage.instance.setMaxOperationRetryTimeMillis(10);
  FirebaseStorage.instance.setMaxDownloadRetryTimeMillis(10);

返回E/StorageException(13068): The operation retry limit has been exceeded.,但通过控制台返回,但未在我的catchErrortry catch块中发现错误。

1 个答案:

答案 0 :(得分:0)

(这不回答确切的问题)

我会在你的情况下做的是我先将文件保存到磁盘,然后在Firebase拿起它后将其删除。流程变为

user -> save local -> firebase -> delete local

而不是

user -> firebase -> (on success) -> done
                 -> (on failure) -> save local -> firebase