firebase - Flutter Firebase 存储插件需要花费大量时间来上传文件

标签 firebase dart flutter firebase-storage

我正在使用 Flutter 开发一个 Android 应用程序。在我的应用程序中,有一个功能,用户可以从他们的设备上传图像。为了存储图像,我使用了 firebase 云存储,这是我用于将文件上传到 firebase 云存储的代码的一部分。

String fileName = "${this.userDetails['id']}_${uuid.v1()}";
String fileExtension = p.extension(_imageFile.path);
String newFileName = p.setExtension(fileName, fileExtension);

print("STEP 1: New filename of image - 111: $newFileName");

final StorageReference ref = FirebaseStorage.instance.ref().child("images/users/original/$newFileName");
final StorageUploadTask uploadTask = ref.put(
            _imageFile, const StorageMetadata(contentLanguage: "en")
        );

print("STEP 2: Image file uploaded - 222");

final Uri downloadUrl = (await uploadTask.future).downloadUrl;
print('STEP 3: downloadUrl data received - 333 : $downloadUrl');

final http.Response downloadData = await http.get(downloadUrl);
print('STEP 4: Download data received - 444 : ${downloadData.body}');

这是我正在使用的 3 个相关的 Flutter 插件,它们可以帮助上面的代码上传文件。
import 'package:uuid/uuid.dart';
import 'package:path/path.dart' as p;
import 'package:firebase_storage/firebase_storage.dart';

一切正常。除此之外,文件上传需要很多时间。完成第 3 步(print('STEP 3: downloadUrl data received - 333 : $downloadUrl');)几乎需要 40-50 秒以上。有时也1分半钟。关于我的互联网速度,它的上传和下载速度接近 80Mbps。我的平均上传的图片大小为 100kB。

需要一些帮助来图。出了什么问题。

从我的 Android Studio 日志中添加屏幕截图( 文件大小为 2.8 MB ) -
I/flutter ( 4451): cliked on image upload button
I/flutter ( 4451): Loading animation started
I/flutter ( 4451): 2018-06-06 23:15:30.327722 - STEP 1: New file name got - 111: KyvU5PFfLRPxYFwHaiKHuywilMV2_679b9ee0-4800-11e8-fe1b-7f6c98d5147d.png
I/flutter ( 4451): 2018-06-06 23:15:30.329420 - STEP 2: Image file uploaded - 222
W/DynamiteModule( 4451): Local module descriptor class for com.google.android.gms.firebasestorage not found.
W/zygote64( 4451): Unsupported class loader
W/zygote64( 4451): Skipping duplicate class check due to unsupported classloader
I/DynamiteModule( 4451): Considering local module com.google.android.gms.firebasestorage:0 and remote module com.google.android.gms.firebasestorage:6
I/DynamiteModule( 4451): Selected remote version of com.google.android.gms.firebasestorage, version >= 6
W/zygote64( 4451): Unsupported class loader
W/zygote64( 4451): Skipping duplicate class check due to unsupported classloader
I/FlutterActivityDelegate( 4451): onResume setting current activity to this
D/UploadTask( 4451): Increasing chunk size to 524288
D/UploadTask( 4451): Increasing chunk size to 1048576
D/UploadTask( 4451): Increasing chunk size to 2097152
I/flutter ( 4451): 2018-06-06 23:17:43.445542 - STEP 3: downloadUrl image data - 333 : 
I/flutter ( 4451): 2018-06-06 23:17:46.757227 - STEP 4: Download data - 444 : ÿØÿá1(Exif

注意 : 这可能是插件问题。所以,在 Github 上提出了一个问题

友情链接 :https://github.com/flutter/flutter/issues/18325

最佳答案

我试过使用 firebase_storage: ^7.0.0最近,上传一个 1MB 的图片只花了几秒钟。
firebase_storage sample upload
你有没有试过最新版的firebase_storage插件并查看相同的行为是否仍然存在?鉴于提供的日志,除了上传图像所花费的时间外,它似乎没有表明任何问题。您也可以尝试通过不同的网络(即移动设备)上传文件,看看是否有任何不同。

关于firebase - Flutter Firebase 存储插件需要花费大量时间来上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50726184/

相关文章:

flutter - 如何将 'Function' 类型的参数分配给 'void Function()' 类型的参数?

Flutter 降级命令

flutter - 更改一个 Provider 中的属性会将另一个 Provider 中的属性更改为 List Flutter

java - 如何使 addListenerForSingleValueEvent 在循环中工作?

dart - 如何在 Dart 服务器 Web 应用程序中动态运行 dart2js?

c++ - Flutter/Dart FFI 从 C++ 部分异步调用 Dart 方法

dart - 自定义 Dart 存储库?

javascript - React-native 在导入语句上抛出意外的 token 错误

ios - 手动安装 Firebase 时出错 (Swift)

java - 无法使用 Gson 库对 Firestore DocumentReference 数据类型进行序列化/反序列化