文件未上载到firebase存储
更新:较小的文件(<1MB)似乎可以正常工作文件未上载到firebase存储,firebase,flutter,dart,firebase-storage,Firebase,Flutter,Dart,Firebase Storage,更新:较小的文件(
我正试图将一个文件从Flatter应用程序上载到Firebase存储,但该文件未上载,uploadTask.onComplete立即完成。在尝试使用
return(wait-storageRef.getDownloadURL())获取URL之前,我不会收到任何错误代码>
以下是相关代码:
\u上传文件(文件)异步{
字符串fileName=DateFormat('yy-MM-ddTH:MM:s').format(DateTime.now()).toString()+file.split('/').last;
StorageReference storageRef=FirebaseStorage.instance.ref().child(文件名);
StorageUploadTask uploadTask=storageRef.putFile(File(File));
等待上载Task.onComplete;
返回(等待storageRef.getDownloadURL());
}
错误:
I/flutter (20165): PlatformException(download_error, Object does not exist at location., null)
E/flutter (20165): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(download_error, Object does not exist at location., null)
E/flutter (20165): #0 _AddNewsState._uploadFile (package:ny_skolapp/add_news.dart:39:7)
E/flutter (20165): <asynchronous suspension>
E/flutter (20165): #1 _AddNewsState._uploadNews (package:ny_skolapp/add_news.dart:49:25)
E/flutter (20165): #2 _AddNewsState.build.<anonymous closure> (package:ny_skolapp/add_news.dart:329:31)
E/flutter (20165): #3 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (20165): #4 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (20165): #5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (20165): #6 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (20165): #7 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (20165): #8 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (20165): #9 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (20165): #10 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (20165): #11 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (20165): #12 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (20165): #13 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (20165): #14 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (20165): #15 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (20165): #16 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (20165): #17 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (20165): #18 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (20165): #19 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (20165): #20 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (20165): #21 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (20165): #22 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (20165): #23 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (20165): #24 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (20165):
及
\u file.add(等待FilePicker.getFilePath(类型:FileType.ANY));
file
来自FilePicker.getFilePath(type:FileType.ANY)
我没有收到任何关于该文件的错误,因此我知道该文件存在。首先,您说在使用return(等待storageRef.getDownloadURL())时出错代码>你能确定它是哪一个错误吗
然后,您可以尝试以下代码上载文件并捕获错误:
Future\u上传文件(字符串文件路径)异步{
试一试{
最终字符串fileName=DateFormat('yy-MM-ddTH:MM:s').format(DateTime.now()).toString()+filePath.split('/').last;
final StorageReference storageRef=FirebaseStorage.instance.ref().child(文件名);
最终StorageUploadTask任务=storageRef.putFile(文件(文件路径));
return await(await task.onComplete).ref.getDownloadURL();
}捕获(错误){
打印(error.toString());
抛出错误。toString();
}
}
我使用过与此类似的代码,并且一直有效到现在。有很多方法可以做到这一点。您可以遵循以下示例:据我所见,您的代码根本没有检查错误。如果上传失败,你认为这里会发生什么?你怎么知道呢?但我在运行终端时仍然会看到一个错误,不是吗?我尝试了try/catch和.catchError()
,但运气不好。或者有没有其他方法来检查这个案例中的错误?此外,还有一个更新:较小的文件(<1MB)似乎可以正常工作。对不起,忘记了错误消息。我试过你的密码,但还是有同样的错误。我已经更新了我原来的帖子。你能不能也展示一下你的代码中你调用的\u uploadFile(file)