Jagoo Sanyog
Jagoo Sanyog

Reputation: 1

No object exists at the desired reference

I am trying to get an image from the storage and use the url for a default profile picture but i am getting this error.

firebase_storage/object-not-found No object exists at the desired reference.

This is my code.

void authenticateStudent() async {
    User? currentStudent;
    final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
    await firebaseAuth
        .createUserWithEmailAndPassword(
      email: umailController.text.trim(),
      password: passwordController.text.trim(),
    )
        .then((auth) {
      currentStudent = auth.user;
    }).catchError((onError) {
      print(onError);
    });
    if (currentStudent != null) { 
FirebaseStorage.instance
          .ref()
          .child('profile')
          .getDownloadURL()
          .then((url) {
        imageUrl = url;
      });
saveDataToFirestore(currentStudent!).then((value) {
        Navigator.pop(context);
        print("User added successfully");
      });
    }
  }

Future saveDataToFirestore(User currentStudent) async {
    FirebaseFirestore.instance
        .collection("students")
        .doc(currentStudent.uid)
        .set({
      "studentUID": currentStudent.uid,
      "fname": fnameController.text.trim(),
      "lname": lnameController.text.trim(),
      "Mobile": phoneController.text.trim(),
      "Program": selectedProgram,
      "student_id": studentidController.text.trim(),
      "cohort": selectedCohort,
      "umail": currentStudent.email,
      "profilepicture": imageUrl,
      "active": active,
      "status": status
    });
  }

The database is structured like this

This is my code.

void authenticateStudent() async {
    User? currentStudent;
    final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
    await firebaseAuth
        .createUserWithEmailAndPassword(
      email: umailController.text.trim(),
      password: passwordController.text.trim(),
    )
        .then((auth) {
      currentStudent = auth.user;
    }).catchError((onError) {
      print(onError);
    });
    if (currentStudent != null) { 
FirebaseStorage.instance
          .ref()
          .child('profile')
          .getDownloadURL()
          .then((url) {
        imageUrl = url;
      });
saveDataToFirestore(currentStudent!).then((value) {
        Navigator.pop(context);
        print("User added successfully");
      });
    }
  }

Future saveDataToFirestore(User currentStudent) async {
    FirebaseFirestore.instance
        .collection("students")
        .doc(currentStudent.uid)
        .set({
      "studentUID": currentStudent.uid,
      "fname": fnameController.text.trim(),
      "lname": lnameController.text.trim(),
      "Mobile": phoneController.text.trim(),
      "Program": selectedProgram,
      "student_id": studentidController.text.trim(),
      "cohort": selectedCohort,
      "umail": currentStudent.email,
      "profilepicture": imageUrl,
      "active": active,
      "status": status
    });
  }

The database is structured like this enter image description here

Upvotes: -1

Views: 66

Answers (1)

Frank van Puffelen
Frank van Puffelen

Reputation: 599866

Your code says:

FirebaseStorage.instance
      .ref()
      .child('profile')
      .getDownloadURL()

But in the screenshot, the file is called profile.png. The path must match completely and exactly, so:

FirebaseStorage.instance
      .ref()
      .child('profile.png')
      .getDownloadURL()

Upvotes: 1

Related Questions