Flutter Flatter从Firebase存储中获取文件
我正在开发一个应用程序,用户可以发布他们的照片,我正在使用修改部分。我首先以Flutter Flatter从Firebase存储中获取文件,flutter,Flutter,我正在开发一个应用程序,用户可以发布他们的照片,我正在使用修改部分。我首先以File类型获取它们的图像,将它们存储在Firebase存储中,获取下载URL并将其存储在Firestore中,然后使用Image.network()显示它们,但在修改页面中,我使用了Imagecropper,它需要图像的路径,因此我必须将其转换为File类型,不是字符串。是否有人知道如何从firebase获取文件,而不是下载URL???使用下载URL下载文件并将其保存在设备上 您可以使用此插件: 如果您不想使用任何插件
File
类型获取它们的图像,将它们存储在Firebase存储中,获取下载URL并将其存储在Firestore中,然后使用Image.network()
显示它们,但在修改页面中,我使用了Imagecropper
,它需要图像的路径,因此我必须将其转换为File
类型,不是字符串
。是否有人知道如何从firebase获取文件,而不是下载URL???使用下载URL下载文件并将其保存在设备上
您可以使用此插件:
如果您不想使用任何插件,请查看以下内容:
如果需要下载存储在云存储中的文件,可以使用writeToFile方法 您可以对任何存储桶引用调用writeToFile方法。文件将下载到的位置由提供的文件实例的绝对路径确定 下面是Api文档中的代码
import 'package:path_provider/path_provider.dart';
Future<void> downloadFileExample() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
File downloadToFile = File('${appDocDir.path}/download-logo.png');
try {
await firebase_storage.FirebaseStorage.instance
.ref('uploads/logo.png')
.writeToFile(downloadToFile);
} on firebase_core.FirebaseException catch (e) {
// e.g, e.code == 'canceled'
}
}
import'package:path_provider/path_provider.dart';
未来下载文件示例()异步{
目录appDocDir=await getApplicationDocumentsDirectory();
File downloadToFile=File('${appDocDir.path}/download logo.png');
试一试{
等待firebase_storage.FirebaseStorage.instance
.ref('uploads/logo.png')
.writeToFile(下载文件);
}关于firebase_core.FirebaseException捕获(e){
//例如,e.code==‘已取消’
}
}
这就是我解决这个问题的方法
String userImageUrl = "";
File _imageFile;
uploadToStorage() async {
String imageFileName = DateTime.now().millisecondsSinceEpoch.toString();
StorageReference storageReference =
FirebaseStorage.instance.ref().child(imageFileName);
StorageUploadTask storageUploadTask = storageReference.putFile(_imageFile);
StorageTaskSnapshot taskSnapshot = await storageUploadTask.onComplete;
await taskSnapshot.ref.getDownloadURL().then((urlImage) {
userImageUrl = urlImage;
print(userImageUrl)
});
}
但我的目的不是将图像下载到设备上,而是将image.network转换为image.file。如果不将图像文件获取/下载到设备上,我认为您将无法对其执行任何类型的操作。您必须加载它,然后执行操作,完成后,从设备中删除该文件。是否可以删除Flatter中的图像?如果知道路径,您可以从目录中删除文件。GetApplicationDocumentDirectory()的角色是什么?它获取一个只有应用程序才能使用的目录,以便您可以在其中存储文件