android 如何在最近的版本中使用getdownloadurl?

wtzytmuj  于 2022-11-03  发布在  Android
关注(0)|答案(5)|浏览(330)
  1. Uri downloaduri=taskSnapshot.getDownloadUrl();//here i cant use getdownloadurl() function
  2. DatabaseReference new_prod=db.push();
  3. new_prod.child("product name").setValue(prod_name);
  4. new_prod.child("product price").setValue(prod_price);
  5. new_prod.child("available stock").setValue(prod_quan);
  6. new_prod.child("product image").setValue(downloaduri);
  7. pd.dismiss();//fragments code

我无法使用getdownloadurl。我已经在firebase存储中存储了图像。是否是该片段限制了getdownloadurl的使用?我的目的是查询firebase中的存储。请帮助我。

mm5n2pyu

mm5n2pyu1#

Firebase Storage SDK的最新版本中删除了taskSnapshot.getDownloadUrl()方法。您现在需要从StorageReference获取下载URL。
调用StorageReference.getDownloadUrl()返回一个Task,因为它需要从服务器获取下载的URL,所以需要一个完成监听器来获取实际的URL。
从有关下载文件的文档中:

  1. storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  2. @Override
  3. public void onSuccess(Uri uri) {
  4. // Got the download URL for 'users/me/profile.png' in uri
  5. System.out.println(uri.toString());
  6. }
  7. }).addOnFailureListener(new OnFailureListener() {
  8. @Override
  9. public void onFailure(@NonNull Exception exception) {
  10. // Handle any errors
  11. }
  12. });

或者,如果您在上传后立即获得下载URL(就像您的情况一样),则第一行可能是这样的:

  1. taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {

另请参阅:

展开查看全部
sshcrbum

sshcrbum2#

经过几个小时的研究和不同的方式,这对我很有效:

  1. filepath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  2. @Override
  3. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  4. //here
  5. Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
  6. while (!urlTask.isSuccessful());
  7. Uri downloadUrl = urlTask.getResult();
  8. final String sdownload_url = String.valueOf(downloadUrl);
r6vfmomb

r6vfmomb3#

  1. storageReference.child("YOUR_CHILD")
  2. .putFile("FILE")
  3. .addOnSuccessListener(new OnSuccessListener() {
  4. @Override
  5. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  6. taskSnapshot
  7. .getStorage()
  8. .getDownloadUrl()
  9. .addOnSuccessListener(new OnSuccessListener() {
  10. @Override
  11. public void onSuccess(Uri uri) {
  12. //Put your result here
  13. }
  14. });
  15. }
mpbci0fu

mpbci0fu4#

下面的方法对我很有效。

  1. _fbs_upload_success_listener = new OnSuccessListener<UploadTask.TaskSnapshot>() {
  2. @Override
  3. public void onSuccess(UploadTask.TaskSnapshot _param1) {
  4. Task<Uri> urlTask = _param1.getStorage().getDownloadUrl();
  5. while (!urlTask.isSuccessful());
  6. Uri downloadUrl = urlTask.getResult();
  7. String _downloadUrl = downloadUrl.toString();
  8. };
jdzmm42g

jdzmm42g5#

这是Kotlin解决方案,在搜索了3个小时后为我工作

  1. val uploadTask =
  2. FirebaseStorage.getInstance().reference.child("images").child(imageName).putBytes(data)
  3. uploadTask.addOnFailureListener {
  4. // Handle unsuccessful uploads
  5. Toast.makeText(baseContext, "Failed to upload", Toast.LENGTH_LONG).show()
  6. }.addOnSuccessListener {
  7. Toast.makeText(
  8. baseContext, "Image uploaded",
  9. Toast.LENGTH_LONG
  10. ).show()
  11. var downloadUrl: Uri? = null
  12. FirebaseStorage.getInstance().reference.child("images")
  13. .child(imageName).downloadUrl.addOnSuccessListener { it1 ->
  14. downloadUrl = it1
  15. }
  16. }

downloadUrl是您的URL

展开查看全部

相关问题