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();
}