簡體   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