Как сохранить URL-адрес изображения в базе данных Firebase в режиме реального времени? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу сохранить URL-адрес изображения в базе данных в реальном времени, но ни одно из решений, которые я пробовал, не решает проблему, код, который я написал, сохраняет изображение в хранилище Firebase, но я хочу сохранить URL-адрес изображения в режиме реального времени. база данных времени, так может кто-нибудь помочь?

этот код просто сохранить изображение в хранилище Firebase

private Button btn_upload,btn_choose;
private ImageView imageView;
private Uri filepath;
private FirebaseStorage storage;
private StorageReference storageReference;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn_choose= (Button) findViewById(R.id.btn_choose);
    btn_upload= (Button) findViewById(R.id.btn_upload);
    imageView= (ImageView) findViewById(R.id.myImage);

    storage = FirebaseStorage.getInstance();
    storageReference = storage.getReference();

    btn_upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            uploadImage();

        }
    });

    btn_choose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            chooseImage();

        }
    });



}

// choose image function code

private void uploadImage() {

    if(filepath!=null)     {
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Uploading...");
        progressDialog.show();

        StorageReference reference = storageReference.child("images/" + UUID.randomUUID().toString());

        reference.putFile(filepath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                progressDialog.dismiss();

                Toast.makeText(MainActivity.this, "Image uploaded", Toast.LENGTH_SHORT) .show();
            }
        })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {

                        double progres = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot.getTotalByteCount());
                        progressDialog.setMessage("Uploaded"+(int)progres+"%");
                    }
                }) ;


    }   }

Я хочу сохранить изображение в базе данных в реальном времени

1 Ответ

1 голос
/ 09 октября 2019

Вы можете запросить URL для загрузки файла после завершения загрузки. Затем добавьте URL в базу данных реального времени

  reference.putFile(filepath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                progressDialog.dismiss();

                Toast.makeText(MainActivity.this, "Image uploaded", Toast.LENGTH_SHORT) .show();
                reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                      //You will get donwload URL in uri
                      Log.d(TAG, "Download URL = "+ uri.toString());
                      //Adding that URL to Realtime database
                      mDatabase.child("imageUrl").setValue(uri.toString());
                    }
                });
            }
        })
...