亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Firebase 從實時數據庫存儲和檢索圖像 url?

如何使用 Firebase 從實時數據庫存儲和檢索圖像 url?

蝴蝶刀刀 2023-09-27 10:23:31
我在將圖像網址存儲到實時數據庫中時遇到問題。它存儲一個與存儲中圖像的 url 無關的 url。private  void uploadFile (){        if (mImageUri != null){            StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()            + "." + getFileExtension(mImageUri));            uploadProgressBar.setVisibility(View.VISIBLE);            uploadProgressBar.setIndeterminate(true);            mUploadTask = fileReference.putFile(mImageUri)                    .addOnSucessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {                        @Override                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {                            Handler handler = new Handler();                            handler.postDelayed(new Runnable() {                                @Override                                public void run() {                                    uploadProgressBar.setVisibility(View.VISIBLE);                                    uploadProgressBar.setIndeterminate(false);                                    uploadProgressBar.setProgress(0);                                }                            },500);                            Toast.makeText(AddProductActivity.this, "Product is added successfully!", Toast.LENGTH_SHORT).show();                            Product product = new Product(productName.getText().toString()                                    ,productDescription.getText().toString()                                    ,price.getText().toString()                                    ,taskSnapshot.getUploadSessionUri().toString()                                    ,oldPrice.getText().toString()                        }                    })                當我從 imageUrl 字段復制存儲的 url 并嘗試查看它是否會顯示圖像時,我收到此文本錯誤:無效的請求。X-Goog-Upload-Command 標頭丟失。
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

您需要taskSnapshot.getUploadSessionUri().toString()在將圖像上傳到正確的 uri 時進行更改,如下所示


下面是獲取正確 URI 的示例


firebaseStorageReference.putFile(resultUri)

        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

            @Override

            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();


                    firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {

                        @Override

                        public void onSuccess(Uri uri) {

                            String mDownloadUri = uri.toString();

                        }

                    });


                }

            });

并將其應用到您的代碼中


private  void uploadFile (){

        if (mImageUri != null){

            StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()

            + "." + getFileExtension(mImageUri));


            uploadProgressBar.setVisibility(View.VISIBLE);

            uploadProgressBar.setIndeterminate(true);


            mUploadTask = fileReference.putFile(mImageUri)

                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

                        @Override

                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            Handler handler = new Handler();

                            handler.postDelayed(new Runnable() {

                                @Override

                                public void run() {

                                    uploadProgressBar.setVisibility(View.VISIBLE);

                                    uploadProgressBar.setIndeterminate(false);

                                    uploadProgressBar.setProgress(0);

                                }

                            },500);



                            final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();

                            firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {

                                @Override

                                public void onSuccess(Uri uri) {

                                    String downloadUri = uri.toString();


                                    Toast.makeText(AddProductActivity.this, "Product is added successfully!", Toast.LENGTH_SHORT).show();


                                    Product product = new Product(productName.getText().toString()

                                            ,productDescription.getText().toString()

                                            ,price.getText().toString()

                                            ,downloadUri

                                            ,oldPrice.getText().toString()

                                            , quantity.getText().toString());


                                    String uploadID = mDatabaseRef.push().getKey();

                                    mDatabaseRef.child(uploadID).setValue(product);


                                    uploadProgressBar.setVisibility(View.INVISIBLE);

                                    openMainActivity();


                                }

                            });

// rest of your code

希望對您有幫助,也歡迎更多支持


查看完整回答
反對 回復 2023-09-27
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號