我尝试查找许多stackoverflow问题, 和许多其他地方,但找不到可行的方法。
我正在将图片上传到Firebase存储,并且在上传时我想要该图片/文档的下载链接。
taskSnapshot.getDownloadUrl()
现在已弃用,
因此他们提到在Firebase存储参考上使用getDownloadUrl
,或在getResult
上使用taskSnapshot
,但是两者都返回一些行话,而我无法获得正确的下载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 / UploadSuccess: com.google.firebase.storage.UploadTask$TaskSnapshot@fff6f13 com.google.android.gms.tasks.zzu@c781349
以及我正在使用的firebase / storage的版本:
implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-storage:16.1.0'
答案 0 :(得分:1)
尝试一下
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
// ...
}
}