Firebase存储的DownloadUrl不起作用 [英] DownloadUrl for firebase storage not working
问题描述
我尝试查找许多stackoverflow问题, 和许多其他地方,但找不到可行的方法.
I tried finding on a lot of stackoverflow questions, and many other places, but could not find a working method.
我正在将图片上传到Firebase存储,并且在上传时我想要该图片/文档的下载链接.
I am uploading a picture to firebase storage, and on upload I want a download link for that picture/document.
taskSnapshot.getDownloadUrl()
现在已弃用,
因此他们提到在Firebase存储参考上使用getDownloadUrl
,在taskSnapshot
上使用getResult
,但是都返回一些行话,而我无法获得正确的下载网址.
taskSnapshot.getDownloadUrl()
is now deprecated,
so they have mentioned to use getDownloadUrl
on the Firebase Storage Reference, or getResult
on the taskSnapshot
, but both return some jargon and I am not able to get a proper download url.
btnUploadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!ImageUri.toString().trim().equals(""))
{
final StorageReference imageRef = mFirebaseStorage.child("some.jpg");
imageRef.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
Log.d("UploadSuccess", ""+task.getResult()+"\n"+mFirebaseStorage.getDownloadUrl());
}
});
}else
{
Toast.makeText(MainActivity.this, "Please Select An Image.", Toast.LENGTH_SHORT).show();
}
}
});
这给了我一个日志输出:
D/上传成功: com.google.firebase.storage.UploadTask$TaskSnapshot@fff6f13 com.google.android.gms.tasks.zzu@c781349
D/UploadSuccess: com.google.firebase.storage.UploadTask$TaskSnapshot@fff6f13 com.google.android.gms.tasks.zzu@c781349
以及我正在使用的firebase/storage的版本:
and the version of firebase/storage i am using :
implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-storage:16.1.0'
推荐答案
尝试一下
val ref = mStorageReference?.child("some.jpg")
val uploadTask = ref?.putFile(Uri.fromFile(File(mImagePath)))
uploadTask?.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>>
{ task ->
if (!task.isSuccessful) {
task.exception?.let {
throw it
}
}
return@Continuation ref.downloadUrl
})?.addOnCompleteListener { task ->
if (task.isSuccessful) {
val downloadUri = task.result
mTempDatabaseReference?.child("image")?.setValue(downloadUri.toString())
} else {
// Handle failures
// ...
}
}
这篇关于Firebase存储的DownloadUrl不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!