我正在努力为用户上传到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.
,但通过控制台返回,但未在我的catchError
或try catch
块中发现错误。
答案 0 :(得分:0)
(这不回答确切的问题)
我会在你的情况下做的是我先将文件保存到磁盘,然后在Firebase拿起它后将其删除。流程变为
user -> save local -> firebase -> delete local
。
而不是
user -> firebase -> (on success) -> done
-> (on failure) -> save local -> firebase