我正在将两个“用户选择的”图像上载到Firebase存储中,并将它们的URL保存到Firestore,但是URL保存仅指向其中一张图片,尽管它们看起来并不相同。 还有一个类似的问题,但是关于swift的问题并不能回答我的问题,这里是该URL的URL。 get download url from multiple file upload firebase storage
我尝试使用ref.getDownloadUrl()获取下载链接,但是给出了错误的URL,tasksnapshot.getDownloadUrl()不再起作用。 我尝试阅读许多答案,但大多数问题都无法通过tasksnapshot.getDownloadUrl()方法过时。
private
这两个图像已上传,我可以在我的Firebase控制台中看到它们,但是存储在firestore中的URL都加载相同的图像,尽管它们不一样,看起来像这样,
我如何获得两个URL,它们将加载我上传的两张图片,而不仅仅是一张
非常感谢您的帮助。
答案 0 :(得分:0)
我只是意识到上传封面图像后并没有保存信息,我还在封面图像上传方法的onComplete中添加了saveInfo方法,现在它可以正常工作了。
final StorageReference profileImageRef = FirebaseStorage.getInstance()
.getReference(SefnetContract.PROFILE_PICS_REF + System.currentTimeMillis() + ".jpg");
// Upload profile picture
if (profileImageUri != null) {
progressBar.setVisibility(View.VISIBLE);
profileImageRef.putFile(profileImageUri).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();
}
return profileImageRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
profileImageUrl = String.valueOf(downloadUri);
saveUserInfo();
} else {
Toast.makeText(EditProfile.this, "upload failed: "
+ task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
}
});
}
if (coverImageUri != null) {
// Upload cover picture
progressBar.setVisibility(View.VISIBLE);
profileImageRef.putFile(coverImageUri).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();
}
return profileImageRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
progressBar.setVisibility(View.GONE);
if (task.isSuccessful()) {
Uri downloadCUri = task.getResult();
coverImageUrl = String.valueOf(downloadCUri);
saveUserInfo();
Toast.makeText(getApplicationContext(), "Cover Picture Uploaded", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(EditProfile.this, "Cover picture upload failed: "
+ task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
我仍然认为可以采用更好的方法来完成此操作,因此,如果您知道一种比此方法更好的方法,请分享。我想要一种方法,通过反复单击按钮可以阻止用户过多地初始化上传方法,谢谢