Flatter将多个图像上载到firebase
当我想上传多张图片时,我面临着这个问题。 我有一个保存“文件”的列表。我读了更多关于它的文章,发现:Flatter将多个图像上载到firebase,firebase,flutter,dart,firebase-storage,Firebase,Flutter,Dart,Firebase Storage,当我想上传多张图片时,我面临着这个问题。 我有一个保存“文件”的列表。我读了更多关于它的文章,发现: Future<List> uploadImage(List<Object> _imageFile) async { final user = await FirebaseAuth.instance.currentUser(); List _urllist = []; int i = 0; await _imageFile.forEach(
Future<List> uploadImage(List<Object> _imageFile) async {
final user = await FirebaseAuth.instance.currentUser();
List _urllist = [];
int i = 0;
await _imageFile.forEach((image) async {
print('igen: ' + image.toString());
// if (ref.getMetadata() != null) { //should be deleted, but this isn't working
// await ref.delete();
// }
print(image.imageFile);
final ref = FirebaseStorage.instance
.ref()
.child('business_image')
.child(user.uid)
.child(i.toString() + '.jpg');
i++;
StorageUploadTask uploadTask = ref.putFile(image.imageFile);
StorageTaskSnapshot downloadUrl = await uploadTask.onComplete;
String _url = await downloadUrl.ref.getDownloadURL();
_urllist.add(_url);
});
print(_urllist);
return _urllist;
}
这个功能有什么问题,有人能帮我解决吗?我所做的是,当用户从手机中选择或拍摄照片时,它会将图像添加到
列表图像中,
,我相信您可能已经自己实现了
关于上传这些图像,我所做的是,它将图像批量上传到firebase存储,然后使用每个用户的url,如果这是您想要的,那么这是我的代码
Future handleUploadImage() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
var uuid = new Uuid();
try {
for (int i = 0; i < widget.images.length; i++) {
final StorageReference storageRef =
FirebaseStorage.instance.ref().child(uuid.v4());
final StorageUploadTask task = storageRef
.child('user_images/${firebaseUser.uid}/')
.putFile(widget.images[i]);
await task.onComplete.then((picValue) async {
await picValue.ref.getDownloadURL().then((downloadUrl) {
print("URL : " + downloadUrl);
imageUrl.add(downloadUrl);
});
});
}
} catch (e) {
print(e);
}
}
Future handleUploadImage()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
var uuid=新的uuid();
试一试{
对于(int i=0;i
请记住我的用户uuid包生成不同的图像URL您看到了什么错误没有错误,它只是简单地返回null。所以我上传了一个空列表到firebase。问题在于返回,函数在生成所有imageUrl之前就返回了。我不明白为什么,但它甚至没有打印URL,我的imageUrl列表仍然是空的……我这样调用你的函数:handleUploadImage()。然后((值){Firestore.instance.collection('users')).document(user.uid).updateData({'email':widget.userData['email'],…etc'userImage':allimagerurls,});setState((){isUpload=false;});});在本例中,您的imageUrl是我的allimageurl。但是打印(“URL:+下载URL”);永远不要执行它对我有用。您的图像数组可能为空,或者将图像添加到数组的方式可能存在错误
Future handleUploadImage() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
var uuid = new Uuid();
try {
for (int i = 0; i < widget.images.length; i++) {
final StorageReference storageRef =
FirebaseStorage.instance.ref().child(uuid.v4());
final StorageUploadTask task = storageRef
.child('user_images/${firebaseUser.uid}/')
.putFile(widget.images[i]);
await task.onComplete.then((picValue) async {
await picValue.ref.getDownloadURL().then((downloadUrl) {
print("URL : " + downloadUrl);
imageUrl.add(downloadUrl);
});
});
}
} catch (e) {
print(e);
}
}