flutter - 从 Firebase 存储中获取图像 URL 并将其存储在 Firebase 实时数据库中
问题描述
我目前正在做一个大学项目,我正在将图像上传到存储并将图像 URL 保存在实时数据库中。我成功地将图像上传到存储并毫无问题地获取其下载 URL。现在的问题是,当我单击提交按钮时,图像 URL 会打印在终端中,但它不会将其 URL 保存在实时数据库中并显示为空。谁能帮我吗
选择图像并保存到存储
String imageUrl, displayUrl;
var url;
File _image;
final picker = ImagePicker();
final db = FirebaseDatabase.instance;
Reference reference = FirebaseStorage.instance
.ref()
.child("UserPlantImages")
.child(StorageUtil.getString("myString"))
.child("image" + DateTime.now().toString());
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.camera);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
upload() async {
UploadTask uploadTask = reference.putFile(
_image,
SettableMetadata(
customMetadata: {
'uploaded by': 'A bad guy',
'description': 'Some description...'
},
),
);
uploadTask.whenComplete(() async {
try {
imageUrl = await reference.getDownloadURL();
setState(() {
displayUrl = imageUrl;
});
} catch (onError) {
print("Error");
}
print(imageUrl);
});
}
用于将 URL 保存到 Realtime DB 的凸起按钮
RaisedButton(
child: Text("Submit"),
color: Colors.blue,
onPressed: () {
if (_formKey.currentState.validate()) {
_formKey.currentState.save();
upload();
displayUrl == null
? print("Image Could not be uploaded")
: print("image url is $displayUrl");
final ref = db
.reference()
.child(StorageUtil.getString("myString"))
ref.child("plantimg").set(displayUrl.toString());
}
}),
解决方案
推荐阅读
- squid - ipvsadm -L -n 突然显示没有活动连接
- ios - 快速向右滑动时删除tableview灰色背景颜色
- python - 请求表单提交,没有图像名称
- c# - c# 从日志中获取值
- php - 如何使用 laravel 中的查询生成器计算年龄?
- python - Selenium - OSError: [WinError 6] 句柄无效
- python - 如何组合多个输入数据集(数据框)?
- windows - 如何获取 Windows 中的每个磁盘并根据 DeviceType 进行过滤,然后在其旁边添加磁盘的大小,用逗号分隔?
- javascript - 包含动态元素的 div 后的按钮,没有触摸 HTML
- sql - 将每日 CSV 文件从电子邮件仅更新值导入 SQL Server