Не удается получить URL изображения из хранилища Firebase - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь загрузить изображение в Firebase Storage и после этого отправить URL-адрес этого изображения в базу данных Firebase. Когда я загружаю изображение без получения URL, все работает нормально, но когда я пытаюсь получить URL, изображение даже не загружается. Вот мой код:

Bitmap image = detectedFaceItems.get(0).getImage();
        StorageReference storageRef = storage.getReference();
        StorageReference imagesRef = storageRef.child("2.jpg");

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] data = baos.toByteArray();
        StorageTask<UploadTask.TaskSnapshot> uploadTask = imagesRef.putBytes(data)
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(getApplicationContext(), "Failed to sent a file", Toast.LENGTH_LONG).show();
                    }
                })
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        //This toast is showing when I comment the part of code with getting URL
                        Toast.makeText(getApplicationContext(), "Successfully sent a file", Toast.LENGTH_LONG).show();
                        Task<Uri> downloadUri = taskSnapshot.getStorage().getDownloadUrl();
                        if (downloadUri.isSuccessful()){
                            String imagePath = downloadUri.getResult().toString();
                            singleDetection.setImage(imagePath);
                        }
                        else{
                            //This Toast is showing when I run the code
                            Toast.makeText(getApplicationContext(), "Failed to get an URL", Toast.LENGTH_LONG).show();
                        }
                    }
                });

edit: я изменил свой код, и теперь он выглядит так:

Bitmap image = detectedFaceItems.get(0).getImage();
        StorageReference storageRef = storage.getReference();
        StorageReference imagesRef = storageRef.child("2.jpg");

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] data = baos.toByteArray();
        StorageTask<UploadTask.TaskSnapshot> uploadTask = imagesRef.putBytes(data)
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(getApplicationContext(), "Failed to sent a file", Toast.LENGTH_LONG).show();
                    }
                })
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(getApplicationContext(), "Successfully sent a file", Toast.LENGTH_LONG).show();
                        storageRef.child("2.jpg").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                //Toast.makeText(getApplicationContext(), uri.toString(), Toast.LENGTH_LONG).show();
                                //Doesn't work corretly
                                String imagePath = uri.toString();
                                singleDetection.setImage(imagePath);
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Toast.makeText(getApplicationContext(), "Failed to get an Uri", Toast.LENGTH_LONG).show();
                            }
                        });
                    }
                });

Теперь у меня другая проблема. Uri правильный, но когда я пытаюсь установить его на моем объекте, метод singleDetection.setImage (imagePath) ничего не устанавливает.

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