Unity-将图像上传到Firebase存储后如何获取下载URL?

时间:2019-07-31 10:00:31

标签: c# firebase unity3d firebase-storage

我正在使用firebase提供的基本的unity firebase存储文档。

Picture provided by firebase

实施代码后,出现错误提示

  

'StorageMetadata.DownloadUrl'已过时:'StorageMetadata.DownloadUrl已弃用。请改为使用StorageReference.GetDownloadUrlAsync()代替”(CS0619)[Assembly-CSharp]

之后,我将代码更改为

string download_url = storage_ref.Child("ss.jpg").GetDownloadUrlAsync().ToString();

在我的代码中

images_ref.PutFileAsync(local_file).ContinueWith((Task<StorageMetadata> task) =>
{
    if(task.IsFaulted || task.IsCanceled)
    {
        Debug.Log(task.Exception.ToString());
        status.text = "Uo-oh, an error occurred!";
    }
    else
    {
        // Metadata contains file metadata such as size, content-type, and download URL.
        Firebase.Storage.StorageMetadata metadata = task.Result;
        Debug.Log("Finished uploading...");

        //string download_url = metadata.DownloadUrl.ToString(); // This shows error

        //Changed as
        string download_url = storage_ref.Child("ss.jpg").GetDownloadUrlAsync().ToString();
        Debug.Log("download url = " + download_url);
    }
});

,但是使用此方法时,它不会返回该URL的字符串

它返回:

  

download url = System.Threading.Tasks.Task`1 [System.Uri]

上传图片后,我需要获取图片的downloadURL字符串值。请帮忙。

谢谢。

1 个答案:

答案 0 :(得分:1)

就像大多数Firebase方法GetDownloadUrlAsync()一样,其名称已经说成async并返回Task<Uri>

与之前一样,您应该使用ContinueWith()

storage_ref.Child("ss.jpg").GetDownloadUrlAsync().ContinueWith((Task<Uri> uriTask) => 
{
    string download_url = uriTask.Result.ToString();
    Debug.Log(download_url);
});

其中result的类型为Uri