如何将图像保存到 Firebase 存储并将 URL 保存到 firebase firestore?
How to save the Image to Firebase storage and save the URL to firebase firestore?
您好,我正在尝试保存从画廊或相机中挑选的图像。
Future<void> getImage({ImageSource source}) async {
_pickedImage = await ImagePicker().getImage(source: source);
if (_pickedImage != null) {
_pickedImageFile = File(_pickedImage.path);
}
}
选择图像后,它必须将图像更新到 firebase 存储。
void _uploadImage(File image) async {
Reference storageReference = FirebaseStorage.instance
.ref()
.child('UserImage')
.child("UserImage/${user.uid}");
UploadTask uploadTask = storageReference.putFile(image);
//StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
uploadTask.then((newUrl) async {
newUrl.ref.getDownloadURL();
return imageUrl = newUrl.toString();
}).catchError((onError) {
print(onError);
});
}
问题是代码在 uploadTask.then((newUrl) 处中断,不允许以字符串形式获取下载 URL。然后它必须更新 firestore 集合的图像路径。
void userDetailsUpdate() {
FirebaseFirestore.instance
.collection("Manufacturer-Accounts")
.doc(user.uid)
.update({
'Designation': designation.text,
'FirstName': firstName.text,
'LastName': lastName.text,
//'Email': user.email,
'Phone': phoneNumber.text,
'UserImage': imageUrl == null ? "" : imageUrl,
});
}
因为它没有获取图像 url 所以它将值保存为“”。有办法吗?我已经使用了 Firebase 存储 ^5.0.1
我的完整源代码在这里
您的 _uploadImage
函数未返回任何内容,因此调用它的人永远无法下载 URL。
Future<String> _uploadImage(File image) async {
Reference storageReference = FirebaseStorage.instance
.ref()
.child('UserImage')
.child("UserImage/${user.uid}");
UploadTask uploadTask = storageReference.putFile(image);
await Future.value(uploadTask);
var newUrl = await storageReference.getDownloadURL();
return newUrl;
}
现在您可以调用此函数并通过以下方式获取下载 URL:
var downloadURL = await _uploadImage(file);
您好,我正在尝试保存从画廊或相机中挑选的图像。
Future<void> getImage({ImageSource source}) async {
_pickedImage = await ImagePicker().getImage(source: source);
if (_pickedImage != null) {
_pickedImageFile = File(_pickedImage.path);
}
}
选择图像后,它必须将图像更新到 firebase 存储。
void _uploadImage(File image) async {
Reference storageReference = FirebaseStorage.instance
.ref()
.child('UserImage')
.child("UserImage/${user.uid}");
UploadTask uploadTask = storageReference.putFile(image);
//StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
uploadTask.then((newUrl) async {
newUrl.ref.getDownloadURL();
return imageUrl = newUrl.toString();
}).catchError((onError) {
print(onError);
});
}
问题是代码在 uploadTask.then((newUrl) 处中断,不允许以字符串形式获取下载 URL。然后它必须更新 firestore 集合的图像路径。
void userDetailsUpdate() {
FirebaseFirestore.instance
.collection("Manufacturer-Accounts")
.doc(user.uid)
.update({
'Designation': designation.text,
'FirstName': firstName.text,
'LastName': lastName.text,
//'Email': user.email,
'Phone': phoneNumber.text,
'UserImage': imageUrl == null ? "" : imageUrl,
});
}
因为它没有获取图像 url 所以它将值保存为“”。有办法吗?我已经使用了 Firebase 存储 ^5.0.1
我的完整源代码在这里
您的 _uploadImage
函数未返回任何内容,因此调用它的人永远无法下载 URL。
Future<String> _uploadImage(File image) async {
Reference storageReference = FirebaseStorage.instance
.ref()
.child('UserImage')
.child("UserImage/${user.uid}");
UploadTask uploadTask = storageReference.putFile(image);
await Future.value(uploadTask);
var newUrl = await storageReference.getDownloadURL();
return newUrl;
}
现在您可以调用此函数并通过以下方式获取下载 URL:
var downloadURL = await _uploadImage(file);