firebase_storage object-not-found No object exists at the desired reference flutter

2,624

Solution 1

What worked for me was a bit unexpected. First, I had the code like this which is how many examples have it.

  Reference reference = storage.ref(filePath);

  UploadTask uploadTask = reference.putFile(imageToUpload);

  final storageSnapshot = uploadTask.snapshot;

  final downloadUrl = await storageSnapshot.ref.getDownloadURL();

Then, I decided to play around with it. I notice if I await the putFile call, it changes the return type, even though its not a future.

  Reference reference = storage.ref(filePath);

  final TaskSnapshot snapshot = await reference.putFile(imageToUpload);

  final downloadUrl = await snapshot.ref.getDownloadURL();

And what do you know, this worked! Very odd, considering it's not obvious you can await the putFile call.

Solution 2

I lost many hours with the same problem as you and IDK why but it is working by creating the reference before using it:

    final FirebaseStorage feedStorage =
              FirebaseStorage.instanceFor(bucket: F.feedBucket);
    
          Reference refFeedBucket = feedStorage
              .ref()
              .child('venues')
              .child(auth.user.uid)
              .child('vibes')
              .child(p.basename(file.path));

  String downloadUrl;

  TaskSnapshot uploadedFile = await refFeedBucket.putFile(file);

  if (uploadedFile.state == TaskState.success) {
    downloadUrl = await refFeedBucket.getDownloadURL();
  }

  return downloadUrl;
Share:
2,624
Ahmad Amin
Author by

Ahmad Amin

Updated on December 27, 2022

Comments

  • Ahmad Amin
    Ahmad Amin over 1 year

    Important: I found the same question but it is closed with incomplete debugging information.

    I am uploading an image to firebase storage and then getting the download URL of that image and storing it to firebase so I can use that URL to show the User's profile image using network image.

    It was working fine before when I was storing the image like

    Reference storageRef = FirebaseStorage.instance.ref('images');
          file = await _compressImage(file: file,);
          await storageRef.putFile(file);
          final String downloadUrl = await storageRef.child(id).getDownloadURL();
          return downloadUrl;
    
    

    but after I am storing images in specific folders

    Reference storageRef = FirebaseStorage.instance.ref('images');
          file = await _compressImage(file: file, id: id);
          await storageRef
              .child(Get.find<UserController>().user.username)
              .child(id)
              .putFile(file);
          final String downloadUrl = await storageRef.child(id).getDownloadURL();
          return downloadUrl;
    
    

    it is showing this error.

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

    Here is the explainable code: I am storing downloadable URL in newImage variable

     String newImage;
          if (_controller.file != null) {
            newImage = await Database().uploadFile(
                file: _controller.file,
                id: Get.find<UserController>().user.username);
            print("new image: " + newImage.toString());
          }
    

    But here when I am printing newImage's value it is printing null to console.

    new image: null
    

    Here is the second method to upload image to firebase storage.

    Future<String> uploadFile({@required File file, @required String id}) async {
        try {
          file = await _compressImage(file: file, id: id);
          await storageRef
              .child(Get.find<UserController>().user.username)
              .child(id)
              .putFile(file);
          final String downloadUrl = await storageRef.child(id).getDownloadURL();
          return downloadUrl;
        } catch (e) {
          print(e);
        }
      }
    

    Debug Console:

    E/StorageException(11376): StorageException has occurred.
    E/StorageException(11376): Object does not exist at location.
    E/StorageException(11376):  Code: -13010 HttpResult: 404
    E/StorageException(11376): {  "error": {    "code": 404,    "message": "Not Found.  Could not get object",    "status": "GET_OBJECT"  }}
    E/StorageException(11376): java.io.IOException: {  "error": {    "code": 404,    "message": "Not Found.  Could not get object",    "status": "GET_OBJECT"  }}
    E/StorageException(11376):  at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
    E/StorageException(11376):  at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
    E/StorageException(11376):  at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
    E/StorageException(11376):  at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
    E/StorageException(11376):  at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
    E/StorageException(11376):  at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
    E/StorageException(11376):  at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
    E/StorageException(11376):  at com.google.firebase.storage.GetDownloadUrlTask.run(GetDownloadUrlTask.java:76)
    E/StorageException(11376):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    E/StorageException(11376):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    E/StorageException(11376):  at java.lang.Thread.run(Thread.java:764)
    I/flutter (11376): [firebase_storage/object-not-found] No object exists at the desired reference.
    I/flutter (11376): new image: null
    

    But when I check the firebase storage and the image is uploaded successfully there.

    What I know is that image is successfully uploading to firebase storage but the above method somehow returning a downable URL before uploading the image.

  • Hitanshu Gogoi
    Hitanshu Gogoi almost 3 years
    i also searching for same solution ., but above solution somehow not work for me ..