Firebase存储一次仅从Android手机上传130张图像

时间:2018-09-30 10:39:21

标签: android firebase firebase-storage

我正在尝试从我的android手机上载2680张图片(总大小为200mb)到Firebase存储。使用以下代码,我一次只能上传130张图片。一次上传没有限制,还是我做错了什么?

try {              
    for (int i=0; i < fileList.length; i++) {
        final File currentFile = fileList[i];
        FirebaseStorage.getInstance().getReference()
            .child("Product Images/" + currentFile.getName() + "." + MimeTypeMap.getFileExtensionFromUrl(currentFile.getPath()))
            .putFile(Uri.fromFile(new File(currentFile.getAbsolutePath())))
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Log.d("UPLOADCOMPLETED", "onSuccess: " + (currentIterator) +taskSnapshot.getDownloadUrl());
                }
            });
    }
} catch (Exception e) {
    Log.d("UPLOADCOMPLETED");
    e.printStackTrace();
}

执行到130之后,它退出循环并执行catch();。 它还在我的logcat中产生2个错误:

W/System.err:at com.google.firebase.storage.UploadTask.schedule(Unknown Source:4)
W/System.err:at com.ubuyquick.customer.UploadingImages.ProductUpload.pushToFirebase(ProductUpload.java:77)

2 个答案:

答案 0 :(得分:1)

我的第一个猜测是您在客户端中溢出了一个队列。

在这种情况下,您需要具有自己的队列管理才能启动上传。所以:

  • 开始前几次上传(肯定少于10次,可能不超过2-3次)
  • 等待每次上传完成
  • 一次上传完成后,开始另一次上传
  • 重复执行,直到完成所有文件

这可以防止客户端超载,并且由于您在连接上引入的争用较少,因此也可能更快。

答案 1 :(得分:0)

您如何定义  fileList ?显而易见的答案是,fileList == 130

还要确保子引用是唯一的