Храните несколько картинок в Firebase Storage - PullRequest
0 голосов
/ 03 июня 2018

У меня есть код для хранения изображений в хранилище Firebase, но он хранит только одно изображение за раз, и мне нужно хранить несколько изображений Вот код:

 Save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Saveimages();
        }
    });

}

private void Saveimages() {

    comment = Comment.getText().toString();

    if (imageUri==null||imageUri2==null){
        Toast.makeText(this, "...Select a Image...", Toast.LENGTH_SHORT).show();
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3==null&&imageUri4==null) {
        Save2ImagesFirebase();
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3!=null&&imageUri4==null){
        Save3ImagesFirebase();
    }
    else if(imageUri!=null&&imageUri2!=null&&imageUri3!=null&&imageUri4!=null){
        Save4ImagesFirebase();
    }
}


private void Save2ImagesFirebase() {


    StorageReference filepath = mStorage.child(" Images");
    filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath2 = mStorage.child(" Images");
    filepath2.putFile(imageUri2).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

private void Save3ImagesFirebase() {

    StorageReference filepath = mStorage.child(" Images");
    filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath2 = mStorage.child(" Images");
    filepath2.putFile(imageUri2).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath3 = mStorage.child(" Images");
    filepath3.putFile(imageUri3).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

private void Save4ImagesFirebase() {

    StorageReference filepath = mStorage.child(" Images");
    filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath2 = mStorage.child(" Images");
    filepath2.putFile(imageUri2).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath3 = mStorage.child(" Images");
    filepath3.putFile(imageUri3).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

    StorageReference filepath4 = mStorage.child(" Images");
    filepath4.putFile(imageUri4).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

Код выглядит длинным, но тольково многом то же самое.Я пытаюсь повторить метод в зависимости от того, что пользователь делает, если он выбирает только два изображения, он должен сохранить эти два сразу, и если он выбирает дерево, он должен сохранять эти 3 и так далее ...

1 Ответ

0 голосов
/ 03 июня 2018

Вы видели, что ваш код на самом деле дублируется?

Оберните ваш код в функцию, подобную этой:

public void storeImage(Uri imageUri) {
    StorageReference filepath = mStorage.child(" Images");
    filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

            if (task.isSuccessful()){

                Toast.makeText(ImageVersus.this, " Published", Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(ImageVersus.this, "..Error..", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

Теперь пользователь может использовать его напрямую:

storeImage(imageUri);

или используйте несколько магазинов:

public void storeMultipleImages(List<Uri> imageUris) {
    for (Uri uri : imageUris) {
        storeImage(uri);
    }
}

Там вы можете хранить любое количество изображений с кодом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...