![](/img/trans.png)
[英]How to download a media file from FirebaseStorage to local storage using MediaStore?
[英]How to download a file from Firebase RealtimeDatabase that is saved in the FirebaseStorage using the file location link?
我正在制作一个在线学习管理系统应用程序。 我为课程创建了一个表格,该表格中提供了讲座幻灯片。 管理员可以将讲座幻灯片上传到数据库,用户应该可以通过 LessonsActivity 下载它们。 当管理员上传讲座幻灯片时,文件将保存在 FirebaseStorage 中,文件位置(文件路径)将保存在数据库的课程表中。 我想让用户进入他们喜欢的任何主题,并使用我在该活动的布局文件中分配的按钮下载课程(使用保存在数据库中的文件路径。不使用 FirebaseStorage 参考)。
我观看了一个视频并尝试使用 DownloadManager 功能,但它显示只能直接从 FirebaseStorage 下载文件。
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Lessons> options =
new FirebaseRecyclerOptions.Builder<Lessons>()
.setQuery(LessonsRef.orderByChild("subject_id").equalTo(subject_id), Lessons.class)
.build();
FirebaseRecyclerAdapter<Lessons, LessonsViewHolder> adapter =
new FirebaseRecyclerAdapter<Lessons, LessonsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull LessonsViewHolder holder, int position, @NonNull final Lessons model)
{
holder.lname.setText(model.getName());
downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//download();
}
});
}
@NonNull
@Override
public LessonsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lessons_layout, parent, false);
LessonsViewHolder holder = new LessonsViewHolder(view);
return holder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
GridLayoutManager mGridLayoutManager = new GridLayoutManager(LessonsActivity.this, 1);
recyclerView.setLayoutManager(mGridLayoutManager);
}
这是我的数据库结构。
try {
final File localFile = File.createTempFile("images", "jpg");
storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmap = BitmapFactory.decodeFile(localFile.getAbsolutePath());
mImageView.setImageBitmap(bitmap);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
});
} catch (IOException e ) {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.