如何在Firestore中修复错误的ImageURL

时间:2019-05-03 02:58:27

标签: android firebase google-cloud-firestore google-cloud-storage

我正在尝试一起下载图像和文本,以在RecyclerView中显示。目前,我只能显示文本。我的图像可以正确上传到Firebase Storage,但是在我的Firestore中,我得到的字符串看起来像这样:

com.google.android.gms.tasks.zzu@28d025f

我认为此图像URL应该是一个实际的链接,例如Firebase存储中的链接。我不确定为什么要在ImageURl字段中获得此字符串。

这意味着当我尝试使用毕加索显示图像时,由于此链接不正确,我什么也没得到。

我的问题是如何解决此链接,以便在将信息上传到Firebase时,我在Firestore中获得一个实际的链接。

下面是我认为引起问题的相对代码

上传方法

这是上传图片网址和字符串的方法

          private void saveBook() {
        final String chapterName = editTextChapterName.getText().toString();
        final String chapterInfo = editTextChapterInfo.getText().toString();
        final int chapterNumber = numberPickerChapterNumber.getValue();

        if (chapterName.trim().isEmpty() || chapterInfo.trim().isEmpty()) { //ensure that user has not left boxes empty
            Toast.makeText(this, "Please add a chapter name and the chapter information", Toast.LENGTH_SHORT).show();
            return;
        }

        if (mImageUri != null) {
            final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                    + "." + getFileExtension(mImageUri));

            mUploadTask = fileReference.putFile(mImageUri)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Toast.makeText(NewBookActivity.this, "Upload successful", Toast.LENGTH_LONG).show();
                            CollectionReference bookRef = FirebaseFirestore.getInstance().collection("Book");
                            bookRef.add(new Book(chapterName, chapterInfo, chapterNumber, fileReference.toString()));
                            finish();
                        }
                    });

适配器

这告诉适配器我们要在布局的每个卡中放置什么

    @Override
    protected void onBindViewHolder(@NonNull BookHolder holder, int position, @NonNull Book model) {
        holder.textViewChapterName.setText(model.getChapterName());
        holder.textViewChapterInfo.setText(model.getChapterInfo());
        Picasso.get()
                .load(model.getImageUrl())
                .fit()
                .into(holder.imageViewDisplay);
        holder.textViewChapterNumber.setText(String.valueOf(model.getChapterNumber()));
    }

我相信问题在于方法saveBook()

此方法用于上传图片和几个字符串。

我试图将saveBook方法更改为

 bookRef.add(new Book(chapterName, chapterInfo, chapterNumber, fileReference.getDownloadUrl().toString()));

来自

bookRef.add(new Book(chapterName, chapterInfo, chapterNumber, mUploadTask.toString()));

imageUrl现在看起来像这样:

com.google.firebase.storage.UploadTask@2db311

有人可以告诉我如何获取Firestore中存储中的图像显示的正确URL吗?

谢谢

0 个答案:

没有答案