Firebase downloadUrl и конфликт токенов доступа - PullRequest
0 голосов
/ 14 апреля 2020

Я работаю над простым приложением, использующим Flutter для извлечения изображения, которое я вручную загрузил в хранилище Firebase, и отображения его на экране. Загрузка всегда успешна, но я не могу получить изображение, потому что вместо этого «dowloadURL» показывает «токен доступа».

Я что-то где-то упустил? Кто-нибудь, пожалуйста, помогите мне? введите описание изображения здесь

1 Ответ

0 голосов
/ 14 апреля 2020

Для загрузки файла и непосредственного получения изображения downloadUrl после этого я создал несколько функций c, которые я вызываю на своей странице, например:

StorageUploadTask imageUploadTask = await ImageProcessProvider.setImageToStorage(_destinationImage, generatedRandomId);
String imageDownloadUrl = await ImageProcessProvider.getImageDownloadUrlAfterUploading(imageUploadTask);

Функции c (включая как я загружаю: 'setImageToStorage'):

import 'dart:async';
import 'dart:io';

import 'package:firebase_storage/firebase_storage.dart';
import 'package:image_picker_modern/image_picker_modern.dart';

class ImageProcessProvider {
  static Future<String> getImageDownloadUrl(String imageId) async {
    try {
      final String downloadUrl = await FirebaseStorage.instance.ref().child(imageId + '.jpg').getDownloadURL();
      return downloadUrl;
    } catch (error) {
      print('getImageDownloadUrl: $error');
      throw error;
    }
  }

  static Future<String> getImageDownloadUrlAfterUploading(StorageUploadTask uploadTask) async {
    try {
      final StorageTaskSnapshot url = (await uploadTask.onComplete);
      final String downloadUrl = (await url.ref.getDownloadURL());
      return downloadUrl; 
    } catch (error) {
      print('getImageDownloadUrlAfterUploading: $error');
      throw error;
    }
  }

  static Future<StorageUploadTask> setImageToStorage(File image, String imageId) async {
    try {
      final String fileName = imageId + '.jpg'; 

      final StorageReference storageRef = FirebaseStorage.instance.ref().child(fileName);
      final StorageUploadTask uploadTask = storageRef.putFile(
        File(image.path),
        StorageMetadata(
          contentType: 'image/jpeg',
        ),
      );

      return uploadTask;
    } catch (error) {
      print('setImageToStorage: $error');
      throw error;
    }
  }
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...