将图像链接从 Firebase 存储存储到 Firebase 数据库时出错
Posted
技术标签:
【中文标题】将图像链接从 Firebase 存储存储到 Firebase 数据库时出错【英文标题】:Error in storing image link from firebase storage to firebase database 【发布时间】:2021-07-12 17:53:24 【问题描述】:我想将存储在 Firebase 存储中的图像链接存储到 Firebase 实时数据库中。
链接字段未在 Firebase 中创建,还附上截图请参考:
MainActivity.java
private void UploadDataIntoFirebase()
if(selected_image != null)
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading...");
progressDialog.show();
count++;
storageReference.putFile(selectedImage)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
progressDialog.dismiss();
Snackbar.make(findViewById(android.R.id.content), "Image Uploaded successfully", Snackbar.LENGTH_SHORT).show();
storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
@Override
public void onSuccess(Uri uri)
itemInfo.setLink(""+uri.toString());
Toast.makeText(getApplicationContext(), "" + uri.toString(), Toast.LENGTH_SHORT).show();
);
databaseReference.setValue(itemInfo);
// Intent intent=new Intent(getApplicationContext(), Item_successfully_added.class);
//startActivity(intent);
)
.addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),"Failed",Toast.LENGTH_SHORT).show();
)
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot takeSnapshot)
double progress
= (100.0
* takeSnapshot.getBytesTransferred()
/ takeSnapshot.getTotalByteCount());
progressDialog.setMessage(
"Uploaded "
+ (int)progress + "%");
);
ItemInfo.java
package com.example.adminapp;
public class ItemInfo
public String name;
public String price,no_of_items,brand_name,selling_price,discount,link;
public ItemInfo()
public void setSelling_price(String selling_price)
this.selling_price = selling_price;
public void setDiscount(String discount)
this.discount = discount;
public void setBrand_name(String brand_name)
this.brand_name = brand_name;
public void setLink(String link)
this.link = link;
public void setName(String name)
this.name=name;
public void setPrice(String price)
this.price=price;
public void setNo_of_items(String no_of_items)
this.no_of_items=no_of_items;
public String getName()
return name;
public String getPrice()
return price;
public String getNo_of_items()
return no_of_items;
public String getDiscount()
return discount;
public String getSelling_price()
return selling_price;
public String getBrand_name()
return brand_name;
public String getLink()
return link;
此代码正在正确执行,但在 Firebase 实时数据库中它没有创建字段“链接”
Firebase 截图:
【问题讨论】:
【参考方案1】:链接字段未在 Firebase 中创建
发生这种情况是因为您使用以下代码行将“itemInfo”对象添加到数据库中:
databaseReference.setValue(itemInfo);
在回调之外。 Firebase API 是异步的。任何需要来自异步操作的数据的代码都需要在“onSuccess()”方法中,或者从那里调用。因此,在这种情况下,最简单的解决方案是将上面的代码行移动到“onSuccess()”方法的后面:
Toast.makeText(getApplicationContext(),""+uri.toString(),Toast.LENGTH_SHORT).show();
【讨论】:
嘿阿拉文德!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!以上是关于将图像链接从 Firebase 存储存储到 Firebase 数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Firebase Web 将图像从链接保存到 Firebase 存储?
将图像从 Firebase 存储链接到 Firestore 文档并在 React Native 中显示它们
Firebase 存储 - 将图像上传到 Firebase 存储并在实时数据库中创建指向该图像的链接