我使用firebase构建了一个聊天应用程序,并希望将多个图像发送到firebase存储。
使用此库
编译"com.github.darsh2:多个图像选择:3474549"
在顶端
private StorageReference storageRef;
private FirebaseApp app;
private FirebaseStorage storage;
创建()方法
app = FirebaseApp.getInstance();
storage =FirebaseStorage.getInstance(app);
按钮点击动作
Gallary.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ChatActivity.this, AlbumSelectActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_LIMIT, 10);
startActivityForResult(intent, Constants.REQUEST_CODE);
pwindo1.dismiss();
}
});
活动结果
if (requestCode == Constants.REQUEST_CODE && resultCode == RESULT_OK) {
ArrayList<Image> images = data.getParcelableArrayListExtra(Constants.INTENT_EXTRA_IMAGES);
Uri uri = Uri.parse(String.valueOf(images));
storageRef = storage.getReference("photos");
final StorageReference photoRef = storageRef.child(uri.getLastPathSegment());
photoRef.putFile(uri)
.addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl = taskSnapshot.getDownloadUrl();
String content = downloadUrl.toString();
if (content.length() > 0) {
editWriteMessage.setText("");
Message newMessage = new Message();
newMessage.text = content;
newMessage.idSender = StaticConfig.UID;
newMessage.idReceiver = roomId;
newMessage.timestamp = System.currentTimeMillis();
FirebaseDatabase.getInstance().getReference().child("message/" + roomId).push().setValue(newMessage);
}
}
});
}
5条答案
按热度按时间myzjeezk1#
此行将帮助我们在一个节点下存储所有图像的链接
}
ht4b089n2#
它工作正常。
juud5qan3#
对于返回列表imageUrls与从库中选择的图像具有相同顺序,不要对每个URI使用for循环
在你得到
ArrayList<Uri> imageUriList
之后,你想现在把它上传到firebase存储器,然后以你选择的顺序返回每个图像的url列表,所以我在下面的方法中使用递归,直到上传所有的uri所以现在从OnActivityResult中获取
imageUriList
值后,我们可以通过此调用方法;当完成上传所有的图像,你可以处理它里面
hfsqlsce4#
这个工具类我创建它上传多个图像到firebase存储使用Kotlin与协程的帮助。如果你有任何增强请告诉我。
你需要先添加这些依赖项。
实现'com.google.firebase:防火墙存储-ktx:19.1.1'
//Firebase通过kotlinx-coroutines-play-serviceslibrary向协程添加支持
实现“org.jetbrains.kotlinx:kotlinx协同程序播放服务:1.3.1”
有关详细信息,请检查link、github link
eoxn13cs5#