Android 使用不同的postkey上传一个图像,但我想在Firebase数据库中存储一个postkey下的所有图像
这是我用post键将所有图像上传到firebase存储和数据库的代码,但一个图像用不同的post键存储,我想将所有上传的图像存储到firebase数据库博客下的一个post键。请帮助我,这是我过去几天面临的问题,我想在一个贴子下检索所有上传的图片Android 使用不同的postkey上传一个图像,但我想在Firebase数据库中存储一个postkey下的所有图像,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这是我用post键将所有图像上传到firebase存储和数据库的代码,但一个图像用不同的post键存储,我想将所有上传的图像存储到firebase数据库博客下的一个post键。请帮助我,这是我过去几天面临的问题,我想在一个贴子下检索所有上传的图片 upload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
upload.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
UploadTask uploadTask;
if( selectedImageGridView.getChildCount()!= 0)
{
for ( int i = 0; i < selectedImages.size(); i++) {
blogimages = new ArrayList<>();
Uri uri = Uri.parse("file://"+selectedImages.get(i));
final String CurrentUser = firebaseAuth.getCurrentUser().getUid();
StorageReference reference = mstorageReference.child("Blog_pics/users").child(uri.getLastPathSegment());
uploadTask = reference.putFile(uri);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Uri downloaduri = taskSnapshot.getDownloadUrl();
Log.v("DOWNLOAD URI", String.valueOf(downloaduri));
blogimages.add(downloaduri.toString());
Log.v("BLOGGIMAGES", String.valueOf(blogimages));
final String key = mdatabaseReference.push().getKey();
final String posttitle = desc.getText().toString();
final String CurrentUser = firebaseAuth.getCurrentUser().getUid();
int l = 0;
while (l < blogimages.size()){
Log.v("BLOGIMAGESSIZE", String.valueOf(blogimages.size()));
Map n = new HashMap();
int countingImage = 0;
n.put(String.valueOf("img" + countingImage), blogimages.get(l).toString());
Log.v("MapCount", String.valueOf(n));
mdatabaseReference.child(key).child("images").updateChildren(n).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
Toast.makeText(PhotoUploadActivity.this, "got download url", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(PhotoUploadActivity.this, "Failed to put in db", Toast.LENGTH_SHORT).show();
}
}
});
l++;
countingImage++;
}
}
}) .addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
});
}
}
}
});
upload.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图)
{
上传任务上传任务;
如果(selectedImageGridView.getChildCount()!=0)
{
对于(int i=0;i
您必须更改此行
StorageReference reference = mstorageReference.child("Blog_pics/users").child(uri.getLastPathSegment());
对于这些行:您必须将这些行放在for循环之前
String userId = firebaseAuth.getCurrentUser().getUid();
StorageReference reference = mstorageReference.child("Blog_pics/users").child(userId);
然后在循环内部
refrence.child(uri.getLastPathSegment());
uploadTask = reference.putFile(uri);
...
您希望实现的数据库结构是什么?请编辑您的问题并添加预期的架构。for循环最多可存储到firebase的图像。如果我传递的是push函数,那么只有一个图像url在存储,而没有push,那么它会将所有图像url存储在firebase数据库中