Произошло исключение при хранении. Объект не существует на месте. Ошибка хранения Firebase - PullRequest
0 голосов
/ 20 апреля 2020

Я перепробовал все решения, опубликованные в StackOverflow, но моя проблема там не обсуждалась, поэтому я поднимаю этот вопрос. В моем случае изображение загружается в хранилище базы данных Firebase, но новая запись не вставляется в FireStore, и возникает эта ошибка. Мой код: -

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        progressDialog.setMessage("Adding candidate........");
        progressDialog.show();
        final String fetch_name = name.getText().toString();
        final String fetch_age = age.getText().toString();
        final String fetch_number = number.getText().toString();
        final String fetch_area = area.getText().toString();
        try{image_path = storageReference.child(user_id+"."+getFileExtension(imageUri)).putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                Log.i("Infor",uri.toString());
                                String img = uri.toString();
                                if(img!=null){
                                    storeData(img,fetch_name,fetch_age,fetch_number,fetch_area);
                                    Toast.makeText(add_candidate.this,"Added successfully",Toast.LENGTH_SHORT).show();
                                    progressDialog.dismiss();
                                }
                                else
                                    Toast.makeText(add_candidate.this,"Error ho gya bhaiya",Toast.LENGTH_SHORT).show();
                                progressDialog.dismiss();
                            }
                        });
                    }
                },1000);
            }
        });}
        catch(Exception e){Log.i("Infor",e.getMessage());
        e.printStackTrace();}

    }
});

Функция сохранения данных выглядит следующим образом: -

private void storeData(String downloadUri, String fetch_name, String fetch_age, String fetch_number, String fetch_area) {
    Map<String,String> candidateData = new HashMap<>();
    candidateData.put("name",fetch_name);
    candidateData.put("age",fetch_age);
    candidateData.put("number",fetch_number);
    candidateData.put("area",fetch_area);
    candidateData.put("Uri",downloadUri);

    firebaseFirestore.collection("Candidates").document(user_id).set(candidateData).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if(task.isSuccessful()){
                progressDialog.dismiss();
                Toast.makeText(add_candidate.this,"Completed",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(add_candidate.this,task.getException().getMessage(),Toast.LENGTH_SHORT).show();
            }
        }
    });
}

Ошибка: -

E / StorageException: возникла исключительная ситуация StorageException. Объект не существует на месте. - Android Студийный код: -13010 HttpResu1t: 404

1 Ответ

0 голосов
/ 20 апреля 2020

Вы пытаетесь получить URL-адрес загрузки из другого места, отличного от того, куда вы загрузили файл.

StorageReference ref = storageReference.child(user_id+"."+getFileExtension(imageUri))
ref.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                storeData(uri,fetch_name,fetch_age,fetch_number,fetch_area);
                Toast.makeText(add_candidate.this,"Added successfully",Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();
            }
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...