我的应用程序具有与不同的用户(成员)中的每个基团。 我想保存用户个人资料图片,以便可以显示给其他用户 每个组中的成员。
我一直在寻找答案了几个星期的。找不到 类似的问题。我在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();
}
答案 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)
是的,我找到了方法。
private CircleImageView civ; //its like image view
private StorageReference storageReference;
onCreate()
中:storageReference = FirebaseStorage.getInstance().getReference("your_firbase_ reference");
StorageReference storageRef = storageReference;
Glide.with(<your activity>.this)
.load(storageRef)
.into(civ);
我正在使用glide库,这种方式适用于Firebase项目。