flutter - 颤动的firebase存储上传空的mp4
问题描述
我一直在开发一个颤振的应用程序,用户在其中拍摄一系列照片,该应用程序会生成照片(或视频)的延时。我使用平台频道生成 mp4 视频,但是,当将 mp4 上传到 Firebase 存储时,视频上传为空。我可以验证 mp4 是否正确写入,因为我可以在笔记本电脑上查看模拟器写入的视频。
有没有人遇到过这个错误?
以下是上传到 Firebase 存储的代码:
Future saveMp4(File mp4File, User user, String date) async {
StorageReference ref = firestorage
.ref()
.child(user.uid)
.child("videos")
.child(date+'.mp4');
print (mp4File);
StorageUploadTask uploadTask = ref.putFile(mp4File, StorageMetadata(contentType: 'video/mp4'));
await uploadTask.onComplete;
String downloadUrl = await ref.getDownloadURL();
print ("download url: $downloadUrl");
}
这是上传事件的输出,其中包含包含视频的文件的位置。
flutter: File: '/Users/ryanmorris/Library/Developer/CoreSimulator/Devices/9A6FB4BC-90B2-4AF4-A622-841979AD5430/data/Containers/Data/Application/554FDF1E-0793-47DA-964A-AF661D46CEA1/Documents/export.mp4'
flutter: EVENT StorageTaskEventType.progress
flutter: EVENT StorageTaskEventType.resume
flutter: EVENT StorageTaskEventType.progress
[C33.1 8D504A8D-BFFF-468C-8970-17985062A8CB 192.168.1.22:62408<->172.217.23.10:443]
Connected Path: satisfied (Path is satisfied), interface: en0
Duration: 1.029s, DNS @0.001s took 0.005s, TCP @0.008s took 0.026s, TLS took 0.052s
bytes in/out: 3976/1035, packets in/out: 10/8, rtt: 0.043s, retransmitted packets: 0, out-of-order packets: 0
flutter: EVENT StorageTaskEventType.progress
flutter: EVENT StorageTaskEventType.success
在 IOS 平台方面,我使用了来自https://github.com/cameronehrlich/CEMovieMaker的代码。我不认为问题出在平台代码上,因为我可以很好地播放输出视频。
这是我的颤振医生输出:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.14.1 18B50c, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.2)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.0)
[✓] Android Studio (version 3.1)
[✓] Connected devices (1 available)
firebase_storage 版本是 1.0.3。
谢谢您的帮助!
解决方案
确保在临时文件夹中创建文件时 writeAsBytes 操作是异步的,您必须等待或执行上传到 firestorage.then((File f){..})
推荐阅读
- macos - 我无法下载 Mac M1 版本的 VS Code。它说这是一个损坏的文件。有什么问题?
- php - 尝试发送消息时出现 Twilio Conversation 致命错误?
- spring-boot - @Inject 或 @Autowired 将首先被调用
- windows - 编写脚本以使用 PuTTY 通过串行连接执行一系列命令
- html - 以角度居中ngx分页元素
- rust - 终生子类型和 impl-trait
- php - 在没有 -iv -pass 的情况下在 PHP 中进行 Openssl 解密
- node.js - aws-sdk-mock - 模拟 s3.upload 不使用模拟实现
- javascript - 类型ORM SQL 子查询
- javascript - 有没有办法结合两个不同的正则表达式?