C# 从firebase storage Xamarin获取图像下载url

C# 从firebase storage Xamarin获取图像下载url,c#,xamarin,firebase-realtime-database,firebase-storage,C#,Xamarin,Firebase Realtime Database,Firebase Storage,我试图从我上传到firebase存储的照片中获取图像url,这样我就可以将对图像的引用存储在另一个表中,这样我就可以在整个应用程序的其他位置显示图像 我现在有 private void UploadPhoto() { if (filePAth != null) { progressDialog = new ProgressDialog(this); progressDialog.SetTitle("Uplo

我试图从我上传到firebase存储的照片中获取图像url,这样我就可以将对图像的引用存储在另一个表中,这样我就可以在整个应用程序的其他位置显示图像

我现在有

private void UploadPhoto()
    {

        if (filePAth != null)
        {
            progressDialog = new ProgressDialog(this);
            progressDialog.SetTitle("Uploading...");
            progressDialog.Window.SetType(Android.Views.WindowManagerTypes.SystemAlert);
            progressDialog.Show();

            var images = storageRef.Child("images/" + Guid.NewGuid().ToString());
            images.PutFile(filePAth)
                .AddOnProgressListener(this)
                .AddOnSuccessListener(this)
                .AddOnFailureListener(this);
        }            
    }


public async void OnSuccess(Java.Lang.Object result)
    {

        try
        {
            var newImageDetails = storageRef.Child("images" + "/" + filePAth);
            Photo photos = new Photo();
            photos.categoryName = spinner.SelectedItem.ToString();
            photos.photoId = newImageDetails.Name;
            photos.ImageUrl = storageRef.DownloadUrl.ToString();
            photos.tagName = addTag.Text;

            if (user != null)
            {
                var uid = user.Uid;
                //set the users id to the category
                photos.uid = uid;
            }

            var firebase = new FirebaseClient(FirebaseURL);
            var item = await firebase.Child("photos").PostAsync(photos);
        }
}
storageref.DownloadUrl未提供正确的url 这就是我要找的

我认为问题在于Guid.NewGuid()。 每次插入新映像并且storageref指向它时,它都会生成一个新代码(映像/GUID代码)。 在OnSuccess中,您从“images/”+文件路径获取图像信息,这与上载路径不同。 为什么要使用新的GUID?您无法确定它,它每次都会创建不同的路径


然后考虑一下,您的下载url也包含媒体令牌,它不仅仅是您所期望的干净路径

我在调试模式下得到了一个解决方案

我看到了downloadurl的属性,找到了Scheme和SchemeSpecificPart

Scheme=“https”

SchemeSpecificPart=“//firebasestorage.googleapis.com/v0/b/maplog-e4ba5.appspot.com/o/-L0AMbihF23YKxsL1uss?alt=media&token=5c7ccef1-c857-4982-a288-fded2f0ff1aa” 这是我的代码:

而且它有效!我一直在寻找解决方案:((但我最终自己找到了XD

void IOnSuccessListener.OnSuccess(Java.Lang.Object result)
{
    var snapShot = (UploadTask.TaskSnapshot)result;
    string imgUrl = snapShot.DownloadUrl.Scheme 
    + ":" 
    + snapShot.DownloadUrl.SchemeSpecificPart;
}