Nee*_*ani 7 android firebase firebase-storage
要将图像上传到Firebase存储,我将附加addOnSuccessListener到StorageReference的实例上.虽然重写onSuccess方法我正在调用getDownloadUrl()实例,taskSnapshot但它给了我一个错误说
无法解析方法getDownloadUrl()
我在2个月前创建的这个应用程序,此应用程序运行良好,getDownloadUrl()工作正常.另外,在taskSnapshot我按Ctrl +空格的情况下,在建议中我找不到getDownloadUrl()方法.为什么会这样?
代码onActivityResult():
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SIGN_IN) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "Signed in!!!1", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Failed to sign in", Toast.LENGTH_SHORT).show();
finish();
}
}
else if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK){
Uri selectedPhoto = data.getData();
StorageReference localRefrence = storageReference.child(selectedPhoto.getLastPathSegment());
// Uploading the file on the storage
localRefrence.putFile(selectedPhoto).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl = taskSnapshot.getDownloadUrl();
FriendlyMessage message = new FriendlyMessage(mUsername, null, downloadUrl.toString());
databaseReference.push().setValue(message);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*l F 22
Firebase API已更改.
2018年5月23日
云存储版本16.0.1
删除了已弃用的StorageMetadata.getDownloadUrl()和UploadTask.TaskSnapshot.getDownloadUrl()方法.要获取当前下载URL,请使用StorageReference.getDownloadUr().
UploadTask.TaskSnapshot有一个命名的方法getMetadata()返回一个StorageMetadata对象.
该StorageMetadata对象包含一个getReference()返回StorageReference对象的命名方法.
该StorageReference对象包含该getDownloadUrl()方法,该方法现在返回Task对象而不是Uri对象.
然后必须听取该任务以获得Uri,这可以异步地或以阻塞方式完成; 请参阅Tasks API.
小智 6
你现在不会得到图像的下载 url 使用
profileImageUrl = 任务快照。getDownloadUrl (). toString (); 此方法已弃用。
相反,您可以使用以下方法
uniqueId = UUID.randomUUID().toString();
ur_firebase_reference = storageReference.child("user_photos/" + uniqueId);
Uri file = Uri.fromFile(new File(mphotofile.getAbsolutePath()));
UploadTask uploadTask = ur_firebase_reference.putFile(file);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return ur_firebase_reference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
System.out.println("Upload " + downloadUri);
Toast.makeText(mActivity, "Successfully uploaded", Toast.LENGTH_SHORT).show();
if (downloadUri != null) {
String photoStringLink = downloadUri.toString(); //YOU WILL GET THE DOWNLOAD URL HERE !!!!
System.out.println("Upload " + photoStringLink);
}
} else {
// Handle failures
// ...
}
}
});
Run Code Online (Sandbox Code Playgroud)