クラスにFirebaseDatabaseリファレンスとFirebaseStorageリファレンスが1つあります。 最初のStorageReferenceはProductImagesであり、2番目の参照はDatabaseReferenceから取得するプッシュキーです。 しかし、問題は、ストレージにイメージをアップロードするときに、2番目の参照が作成されないということです。すべてのイメージはProductImagesリファレンスに保存されています。 私のコードに欠陥はありますか? これはFirebaseの制限ですか? また、Firebase Storageにプログラムでネストされたフォルダを作成する方法はありますか?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の文字が問題を引き起こしているのだろうかと思います。ハードコードされた名前で試してみることはできますか?例えば。 –
@Amritあなたが作りたい入れ子のフォルダのタイプを教えてください。 –
@FrankvanPuffelen私はあなたの方法を試しましたが、結果は同じです。同じことがあなたのコードと私のコードで起こっています。 1つのイメージのみがストレージに保存され、 "SubFolder"という名前の新しいフォルダを作成する代わりに、イメージの名前は "SubFolder.jpeg" – Amrit