首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能将图片上传到火柴存储上?

为什么不能将图片上传到火柴存储上?
EN

Stack Overflow用户
提问于 2021-09-29 11:05:27
回答 1查看 60关注 0票数 1

这段代码有一个错误:

代码语言:javascript
复制
String download_url=task.getResult.getStorage.getDownloadUrl.toString);

当我运行程序时,我从图片库中选择一张图片并将其发布,并收到一条消息:

未对

用户进行身份验证,请使用Firebase身份验证进行身份验证,然后重试

代码语言:javascript
复制
final StorageReference newPhoto=mPhotosStrorage.child(imageUri.getLastPathSegment());
newPhoto.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

        if (task.isSuccessful())
        {
            final String myKey=mPhotosDatabase.push().getKey();

 //this error       String download_url=task.getResult().getDownloadUrl().toString();

            String datem=getDateTime();              

            DatabaseReference newDatabase=mPhotosDatabase.child(myKey);

            newDatabase.child("postid").setValue(myKey);
            newDatabase.child("postedby").setValue(userId);
            newDatabase.child("postedon").setValue(datem);
            newDatabase.child("postdetails").setValue(post);
            newDatabase.child("postlikes");
            newDatabase.child("postviews");
            newDatabase.child("postcomments");

            newDatabase.child("postimage").setValue(download_url).addOnCompleteListener(new OnCompleteListener<Void>() {
                @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    if (task.isSuccessful())
                    {
                        pb.setVisibility(View.GONE);
                        Pair[] pairs=new Pair[1];
                        pairs[0]=new Pair<View,String>(homeLayout,"etTransition");

                        ActivityOptions options=ActivityOptions.makeSceneTransitionAnimation(PostActivity.this,pairs);

                        startActivity(new Intent(PostActivity.this,HomeActivity.class),options.toBundle());

                    }
                }
            });
        }else {
            Toast.makeText(PostActivity.this, "Error:"+task.getException().getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
});

请帮我解决这个问题,帮我重写代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 11:42:44

根据您最后的评论,问题出现在以下代码行:

代码语言:javascript
复制
String download_url=task.getResult().getDownloadUrl().toString();

请注意,这不是你现在如何获得下载URL。将该Task对象转换为String完全没有帮助。要解决这个问题,请使用以下代码行:

代码语言:javascript
复制
storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        String url = uri.toString();
        //Do what you need to do with the URL
    }
});

此外,始终确保对用户进行身份验证,因为只有当用户未经身份验证并且规则被设置为拒绝操作时,才会发生该错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69375167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档