簡體   English   中英

如何在firebase實時數據庫中保存圖像url?

[英]How to save image url in firebase real-time database?

我想將圖像 url 保存在實時數據庫中,但我嘗試的解決方案都沒有解決問題,我寫的代碼將圖像保存在 firebase 存儲中,但我想將圖像 Z572D4E421-5E6B71E12Z8 保存在實時數據庫中,所以有人可以幫忙嗎?

此代碼只是將圖像保存在 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+"%");
                    }
                }) ;


    }   }

我想將圖像存儲在實時數據庫中

上傳完成后,您可以請求下載 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());
                    }
                });
            }
        })
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
            && data != null && data.getData() != null )
    {
        filePath = data.getData();
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

私人無效uploadImage(){name = txtname.getText().toString();

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

        StorageReference ref = storageReference.child("images/"+ name);
        ref.putFile(filePath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        progressDialog.dismiss();
                        Toast.makeText(MainActivity.this, "Uploaded", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        progressDialog.dismiss();
                        Toast.makeText(MainActivity.this, "Failed "+e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
                                .getTotalByteCount());
                        progressDialog.setMessage("Uploaded "+(int)progress+"%");
                    }
                });
    }

            Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM