почему я не могу загрузить несколько деталей в базу данных Firebase - PullRequest
0 голосов
/ 03 мая 2020

Когда я пытаюсь загрузить несколько файлов в хранилище и базу данных Firebase, несколько файлов загружаются в хранилище Firebase, но при переходе в базу данных Firebase детали файла (название и URL) обновляются только для одного файла (последний файл) для других файлов обновляется только заголовок.

Вот что происходит, когда я загружаю несколько файлов


Это код загрузки нескольких файлов

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Uri fileUri;
    String fileName;

    if(requestCode == PICK_FILES && resultCode == RESULT_OK){
        if (data.getClipData() != null){

            int totalItemsSelected = data.getClipData().getItemCount();

            for (int i = 0 ;  i < totalItemsSelected; i++){

                fileUri= data.getClipData().getItemAt(i).getUri();

                fileName = getFileName(fileUri);

                fileNameList.add(fileName);
                fileDoneList.add("uploading");
                uploadListAdapter.notifyDataSetChanged();

                final StorageReference fileToUpload = mStorage.child("HNDIT/1st Year 2nd Sem/OOP").child(fileName);
                databaseReference = FirebaseDatabase.getInstance().getReference("HNDIT/1st Year 2nd Sem/OOP").push();
                databaseReference.child("title").setValue(fileName);

                final int finalI = i;
                fileToUpload.putFile(fileUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        StorageMetadata snapshotMetadata = taskSnapshot.getMetadata();
                        Task<Uri> downloadUrl = fileToUpload.getDownloadUrl();


                        downloadUrl.addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                String fileReference = uri.toString();
                                databaseReference.child("url").setValue(fileReference);
                            }
                        });


                        fileDoneList.remove(finalI);
                        fileDoneList.add(finalI, "done");

                        uploadListAdapter.notifyDataSetChanged();
                    }
                });

            }

Я хочу знать, в чем заключается ошибка и как ее устранить .???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...