image - 如何将图像从颤动的资产上传到firebase存储?
问题描述
我正在使用下面的代码从图库中选择图像以上传到 Flutter 应用程序中的 Firebase 存储,但我希望如果用户不选择图像,则应将资产中的默认图像上传到 firebase 存储。我应该为要从资产中选择的图像编写什么代码并将其设置为等于,File avatarImageFile
以便可以将其上传到 Flutter 应用程序中的 Firebase 存储
File avatarImageFile;
Future getImage() async {
File image = await ImagePicker.pickImage(source: ImageSource.gallery);
if (image != null) {
setState(() {
avatarImageFile = image;
isLoading = true;
});
}
uploadFile();
}
解决方案
您可以将资产图像转换为文件,然后上传到 Firebase!这是要转换的代码:
import 'dart:async';
import 'dart:io';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path_provider/path_provider.dart';
Future<File> getImageFileFromAssets(String path) async {
final byteData = await rootBundle.load('assets/$path');
final file = File('${(await getTemporaryDirectory()).path}/$path');
await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
return file;
}
在您的示例中,您将像这样调用此函数:
File f = await getImageFileFromAssets('images/myImage.jpg');
并编辑您的代码:
File avatarImageFile;
Future getImage() async {
File f = await getImageFileFromAssets('path of your asset Image');
File image = await ImagePicker.pickImage(source: ImageSource.gallery);
if (image != null) {
setState(() {
avatarImageFile = image;
isLoading = true;
});
}else{
avatarImageFile = f;
isLoading = true;
}
uploadFile();
}
推荐阅读
- c++ - OpenGL 3 着色器错误
- java - 如何获取违反多字段 XSD 断言的 XML 元素
- go - 为什么我解析的 HTML 模板不起作用?
- optaplanner - CVRPTW,即使有未使用的车辆,硬约束也会被打破
- php - 如何使用 PHP AURA ROUTER 和 ZEND DIACTOROS 将 GET 变量发送到控制器
- php - 使用 PHPMailer 发送电子邮件时遇到问题?
- python - MongoDB - Python Flask问题:AttributeError:'Cursor'对象没有属性'title'
- javascript - 如何将 sphinx_js 与“导出默认类”一起使用?
- css - SASS/SCSS - 错误:$color:currentColor 不是颜色
- java - 无法下载 TensorFlow for Java