firebase_storage object-not-found No object exists at the desired reference flutter
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;
Ahmad Amin
Updated on December 27, 2022Comments
-
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 almost 3 yearsi also searching for same solution ., but above solution somehow not work for me ..