Firebase不存储所有图像

问题描述 投票:0回答:1

我正在尝试将图像从Glide存储到Firebase存储,但仅存储了最后一个图像。

    for (i = 0; i < imageFileList.size(); i++) {
        StorageRef = mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");
        Glide.with(this).asBitmap().load(imageFileList.get(i).getAbsolutePath()).into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                stream = new ByteArrayOutputStream();
                resource.compress(Bitmap.CompressFormat.JPEG, 20, stream);
                byte[] byteArray = stream.toByteArray();
                StorageRef.putBytes(byteArray);
            }
            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });
    }
android firebase firebase-storage
1个回答
0
投票

我在这里只能假定StorageRef是类成员,因为您没有显示它的伪造位置。如果是这种情况,您的循环将在每次插入时覆盖StorageRef,并且在循环结束后仅保留最后一个值。由于Glide是异步的,因此所有回调将在循环完成后发生,并且它们都将使用StorageRef的最后一个值。

您应该做的是将StorageRef设置为最终的局部变量,以免每次循环都不会覆盖它:

final StorageReference StorageRef =
    mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");
© www.soinside.com 2019 - 2024. All rights reserved.