【发布时间】:2018-01-28 04:38:22
【问题描述】:
我的班级中有一个 FirebaseDatabase 引用和两个 FirebaseStorage 引用。 第一个 StorageReference 是 ProductImages,第二个引用是我将从 DatabaseReference 中获得的按键。 但问题是,当我在存储中上传图像时,不会创建第二个引用。所有图像都存储在 ProductImages 参考中。 我的代码有什么问题吗? 这是 Firebase 的限制吗? 或者有没有其他方法可以通过编程方式在 Firebase 存储中创建嵌套文件夹?
我已附上代码:
private DatabaseReference productRef;
private StorageReference productImagesRef, imageRef;
productRef = FirebaseDatabase.getInstance.getReference().child("Products");
productImagesRef = FirebaseStorage.getInstance().getReference().child("ProductImages");
final String key = productRef.push().getKey();
imageRef = FirebaseStorage.getInstance().getReference().child("ProductImages").child(key);
imageRef.putFile(mainImageUri)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
progressDialog.dismiss();
Toast.makeText(getActivity(), "Failed to upload!!! Try Again...", Toast.LENGTH_SHORT).show();
return;
}
})
.addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// When the image has successfully uploaded, we get its download URL
mainImageUrl = taskSnapshot.getDownloadUrl();
}
});
imageRef.putFile(sideImageOneUri)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
progressDialog.dismiss();
Toast.makeText(getActivity(), "Failed to upload!!! Try Again...", Toast.LENGTH_SHORT).show();
return;
}
})
.addOnSuccessListener( getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// When the image has successfully uploaded, we get its download URL
sideImageOneUrl = taskSnapshot.getDownloadUrl();
}
});
【问题讨论】:
-
不知道是不是推送ID中的字符引起了问题。您可以尝试仅使用硬编码的名称吗?例如。
imageRef = FirebaseStorage.getInstance().getReference().child("ProductImages").child("Subfolder"); -
@Amrit,让我们知道您想要制作哪种类型的嵌套文件夹。
-
@FrankvanPuffelen 我试过你的方法,但结果是一样的。你的代码和我的代码也发生了同样的事情。存储中仅存储一个图像,而不是创建一个名为“SubFolder”的新文件夹,该图像被命名为“SubFolder.jpeg”
-
@niveshshastri 我想要一个名为“ProductImages”的文件夹。这个文件夹应该可以容纳许多子文件夹,例如product1,product2,......这些子文件夹应该能够存储图像文件。但我的代码的问题是没有创建子文件夹,所有图像都存储在“ProductImages”文件夹中。
-
@Amrit,你不能用你的代码创建嵌套文件夹,你必须为这个任务更新你的代码。
标签: android firebase firebase-storage