我的 Xamarin.iOS 应用程序中有图像上传功能。我已将此上传的图像存储在 Firebase 存储中。我的文件已成功上传到 Firebase 存储,但问题是:
当我尝试使用 firebase 存储的 listAll() 方法获取所有图像时,它不会返回所有图像,直到文件夹中的图像 >= 2。
将图像上传到 Firebase 存储的代码:
private void ImagePicker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
{
if (e.Info[UIImagePickerController.MediaType].ToString() == "public.image")
{
NSData imgData = new NSData();
imgData = e.OriginalImage.AsJPEG();
Guid uniqId = Guid.NewGuid(); // use - uniqId.ToString()
FirebaseClient.Instance.UploadAdventurePhoto(imgData, this.Adventure.Id, uniqId.ToString());
//(Path of folder - gs://myapp.appspot.com/adventures/00ac45a3-7c92-4335-a4b8-b9b705c4dd72)
StorageReference photsUrl = Storage.DefaultInstance.GetReferenceFromUrl($"gs://myapp.appspot.com/adventures/{this.Adventure.Id}");
photsUrl.ListAll(this.Handler);
}
this.imagePicker.DismissViewController(true, null);
}
// Add image to Firestore collection's Document.
private async void Handler(StorageListResult result, NSError arg2)
{
foreach (var image in result.Items)
{
// Logic to append image to Firestore document.
}
}
/// <param name="imgData">Selected image that needs to be stored on storage.</param>
/// <param name="adventureId">Name of the folder.</param>
/// <param name="imageName">By this name image will get stored in folder.</param>
public void UploadAdventurePhoto(NSData imgData, string adventureId, string imageName)
{
StorageReference adventurePictureRef = Storage.DefaultInstance.GetReferenceFromPath($"adventures/{adventureId}/{imageName}");
StorageMetadata metaData = new StorageMetadata();
metaData.ContentType = "image/jpg";
adventurePictureRef.PutData(imgData, metaData);
}
第一张图片上传后,图片上传成功,但当处理程序被调用时,它会给出以下响应:
但是在此之后,当我上传第二张图片时,它会给出 Firebase.Storage.StorageReference 1作为响应:
意味着如果有两个图像,那么只有它返回 url 引用。如何解决这个问题?
我已经添加了rules_version = '2'; 在存储规则中。

