2 different urls created while uploading files to firebase storage and cloud firebase

Viewed 22

Iam uploading files to firebase storage and the referenced url in cloudfirestore. Uploading and showing the file in the app works perfectly. But when i try to delete an image, i get an error: "[firebase_storage/object-not-found] No object exists at the desired reference." I found out that the urls in firebasestorage and in cloudfirestore are not the same:

FirebaseStorage URL: https://firebasestorage.googleapis.com/v0/b/project-db68d.appspot.com/o/images%2FNvbKO7fZxv5KXsPy1lPJovsxiKXN%2Fimage_cropper_1662715164516_out.jpg?alt=media&token=2d591f0d-d2ee-4640-8133-57cea509d3d7 //Does not show the file in the browser

CloudFirestore URL: gs://project-db68d.appspot.com/images/NvbKO7fZxv5KXsPy1lPJovsxiKXN/image_cropper_1662715164516_out.jpg // Shows the file in der browser

I don`t understand why 2 different urls are created and how to fit it, when i print the url it shows the url from firestorage?

This is my code: Iam working with ImagePicker, flutter_image_compress and image_cropper, latest versions flutter and packages

Future<File?> getImageFromCamera()async{
  File receivedImageFromCamera = await _pickImageFromDevice.pickSingleImageFromGallerieOrCamera(ImageSource.camera);
  File receivedCroppedImage = await _croppImageFromDevice.imageCropper(receivedImageFromCamera);
  File? compressedFile = (await _imageCompressor.compressFile(receivedCroppedImage));
  return compressedFile;
}

static Future<String> uploadFile(String destination,File file)async{
  final ref = FirebaseStorage.instance.ref(destination);
  final result = await ref.putFile(file);
  final String fileUrl = (await result.ref.getDownloadURL()).toString();
  return fileUrl;
}


   if(compressedFile==null) return;
  final fileName = basename(compressedFile.path);
  final destination = 'images/$chatId/$fileName';
  final fileUrl = await UploadFileToStorage.uploadFile(destination,compressedFile);
1 Answers

Both URLs are valid references to the file, but they have a different protocol. The gs:// protocol is specific to Google Cloud Storage, and is supported by very few clients. The https:// protocol is universal and supported almost everywhere.

Related