Isa*_*nse 15 android firebase firebase-storage
将文件上传到Firebase后,如何获取该URL,以便将其存储以供日后使用?我想将URL写入Firebase数据库,以便其他用户可以访问该图像.
我正在上传文件:
public void uploadFile()
{
StorageReference filepath = mstorageRef.child("folder").child(filename);
Uri File= Uri.fromFile(new File(mFileName));
filepath.putFile(File).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
{
Toast.makeText(MtActivity.this, "Upload Done", Toast.LENGTH_LONG).show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我已经确认文件实际上是上传的,所以现在我只需要我可以写入数据库的URL.但是,当我尝试这样做时:
Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误并说 This method should only be accessed from tests or within private scope
我不确定这意味着什么,我也不知道为什么我会得到这个错误,因为我正在按照Firebase提供的这个例子.
是否有获取URL的新方法?
此外,该特定于该项目的URL是否是唯一的?这意味着如果我将它存储到数据库并尝试以后访问它,我能够这样做吗?
Ana*_*nth 29
您正在使用UploadTask.getDownloadUrl()哪个已弃用.您可以使用StorageReference.getDownloadUrl().
在你的情况下你可以试试这个 -
filepath.putFile(File).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
{
filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Uri downloadUrl = uri;
//Do what you want with the url
}
Toast.makeText(MtActivity.this, "Upload Done", Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
注意StorageReference.getDownloadUrl()返回Task,必须异步处理,你不能做Uri downloadUrl = photoRef.getDownloadUrl().getResult();其他事情java.lang.IllegalStateException: Task is not yet complete
ama*_*mar -1
你试过了吗 taskSnapshot.getDownloadUrl()?如果这也不起作用,您可以通过以下方式在成功侦听器中获取图像位置mstorageRef.child("folder").child(filename).toString()
| 归档时间: |
|
| 查看次数: |
17482 次 |
| 最近记录: |