有没有办法救我的火力用户的个人资料照片,后来显示?

时间:2019-01-31 15:39:29

标签: java android firebase firebase-realtime-database

我的应用程序具有与不同的用户(成员)中的每个基团。 我想保存用户个人资料图片,以便可以显示给其他用户 每个组中的成员。

我一直在寻找答案了几个星期的。找不到 类似的问题。我在Firebase和android上有一些经验。

代码如下:

private void saveUserProfilePic(){
    Uri photoUrl = thisUser.getPhotoUrl();


    if(photoUrl != null) {

        StorageReference fileReference = mStorageRef.child(thisUser.getUid());
        fileReference.putFile(photoUrl)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(MainActivity.this, "image Saved", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });
    } else {
        Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
    }

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则希望上传一个具有URL的文件。您需要使用UploadTask了点。最好的办法是创建从URL的InputStream,然后创建一个uploadTask。像下面这样。

HttpURLConnection connection = (HttpURLConnection)photoUrl.openConnection();
InputStream stream = connection.getInputStream();

或者您可以创建一个BufferedInputStream     InputStream流=新的BufferedInputStream(connection.getInputStream());

现在你可以创建一个uploadTask。

UploadTask uploadTask = fileReference.putStream(stream);

现在你可以用你的旧代码。

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Toast.makeText(MainActivity.this, "image Saved", Toast.LENGTH_SHORT).show();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            });

答案 1 :(得分:-1)

是的,我找到了方法。

  1. 创建字段:
private CircleImageView civ;  //its like image view

private StorageReference storageReference;
  1. onCreate()中:
storageReference = FirebaseStorage.getInstance().getReference("your_firbase_ reference");
  1. 使用以下几行:
StorageReference storageRef = storageReference;
Glide.with(<your activity>.this)
   .load(storageRef)
   .into(civ);

我正在使用glide库,这种方式适用于Firebase项目。