繁体   English   中英

如何使用文件位置链接从保存在 FirebaseStorage 中的 Firebase RealtimeDatabase 下载文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM