我有一个UploadTask可以将图像发送到Firebase存储,但是现在我可以获得相应的下载网址,但我还是面临一些问题。
var upload = childRef.DownloadURL;
upload.AddOnSuccessListener(this);
我实现了IOnSuccessListener接口,因此函数必须是:
public void OnSuccess(Java.Lang.Object result){
//get url from result
}
如何转换结果以访问网址?
答案 0 :(得分:0)
我遇到了同样的问题,但在添加AddOnFailureListener
时能够发现错误。错误消息没有帮助。
发生未知错误,请检查HTTP结果代码和内部 服务器响应的异常。
结果代码为0.错误代码为-13000,根据Firebase错误表,这是一个未知错误。
FirebaseApp.InitializeApp(Application.Context);
FirebaseStorage storage = FirebaseStorage.Instance;
StorageReference storageRef = storage.GetReferenceFromUrl("gs://");
StorageReference imageRef = storageRef.Child("folder/image.jpg");
var downloadURL = imageRef.DownloadUrl.AddOnSuccessListener(this, this).AddOnFailureListener(this, this);
public void OnSuccess(Java.Lang.Object result)
{
string downloadURL = result.ToString();
}
public void OnFailure(Java.Lang.Exception e)
{
Log.Warn("FirebaseStorage", "Download Failure", e);
}
答案 1 :(得分:0)
我在调试模式下得到了一个解决方案
我看到了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 34;
所以这是我的代码:
void IOnSuccessListener.OnSuccess(Java.Lang.Object result)
{
var snapShot = (UploadTask.TaskSnapshot)result;
string imgUrl = snapShot.DownloadUrl.Scheme
+ ":"
+ snapShot.DownloadUrl.SchemeSpecificPart;
}
它有效! 我一直在寻找解决方案:(( 但我终于找到了自己的XD
答案 2 :(得分:0)
我遇到了与-13000相同的错误代码,根据Firebase错误表,这是一个未知错误,我通过更新设备中的playstore应用解决了
答案 3 :(得分:0)
我会说EncodedSchemeSpecificPart对我来说很完美
var snapShot = (UploadTask.TaskSnapshot)result;
string downloadURL =snapShot.DownloadUrl.Scheme + ":" +snapShot.DownloadUrl.EncodedSchemeSpecificPart;
答案 4 :(得分:0)
对于最新的Xamarin Android,这是正确的答案
public async void OnSuccess(Java.Lang.Object result)
{
var snapShot = (UploadTask.TaskSnapshot)result;
if (snapShot != null)
{
var url = await snapShot.Storage.GetDownloadUrlAsync();
imageUrl = url?.ToString();
}
}