flatter:Upload Image Unhandled Exception:PlatformException(firebase_存储,存储Uri不能包含path元素.,{},null)

flatter:Upload Image Unhandled Exception:PlatformException(firebase_存储,存储Uri不能包含path元素.,{},null),firebase,flutter,google-cloud-firestore,firebase-storage,Firebase,Flutter,Google Cloud Firestore,Firebase Storage,我想知道为什么我在上传图片时会出现这个错误 class StorageRepository { FirebaseStorage storage = FirebaseStorage.instanceFor( bucket: '', (Edit: The link was only wrong) ); Future<String> uploadFile(File file) async { var userUID = getCurrentUs

我想知道为什么我在上传图片时会出现这个错误

class StorageRepository {
  FirebaseStorage storage = FirebaseStorage.instanceFor(
    bucket:
        '', (Edit: The link was only wrong)
  );

  Future<String> uploadFile(File file) async {
    var userUID = getCurrentUsersUID();
    var storageRef = storage.ref().child("user/profile/$userUID");
    UploadTask uploadTask = storageRef.putFile(file);
    String downloadUrl = await (await uploadTask).ref.getDownloadURL();
    userInstance.avatarUrl = downloadUrl;

    return downloadUrl;
  }
}
错误消息:

E/flutter (20967): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(firebase_storage, The storage Uri cannot contain a path element., {}, null)
从:

您需要获取bucket的名称,但您正在传递项目的
url\path
。转到您的项目,获取要使用的存储的bucket名称。这都是假设您希望使用主firebaseApp之外的另一个存储桶。否则,只需使用:

Future<String> fireBaseUploadFile(String filePath) async {
FirebaseStorage storage = FirebaseStorage.instance;
   Reference ref = FirebaseStorage.instance.ref('/productImages/').child('someimageID');
  File file = File(filePath);

  try {
    await ref.putFile(file);
  } on FirebaseException catch (e) {
    print(e);
  }
  return ref.getDownloadURL();
}
未来fireBaseUploadFile(字符串文件路径)异步{ FirebaseStorage=FirebaseStorage.instance; Reference ref=FirebaseStorage.instance.ref('/productImages/').child('someimageID'); 文件=文件(文件路径); 试一试{ 等待ref.putFile(文件); }关于FirebaseException捕获(e){ 印刷品(e); } return ref.getDownloadURL(); } 让生活更轻松

 FirebaseStorage storage =  FirebaseStorage.instanceFor(
      bucket: 'secondary-storage-bucket');
Future<String> fireBaseUploadFile(String filePath) async {
FirebaseStorage storage = FirebaseStorage.instance;
   Reference ref = FirebaseStorage.instance.ref('/productImages/').child('someimageID');
  File file = File(filePath);

  try {
    await ref.putFile(file);
  } on FirebaseException catch (e) {
    print(e);
  }
  return ref.getDownloadURL();
}