【发布时间】:2020-12-20 14:16:55
【问题描述】:
看起来在最新版本的 Firebase Storage 中,.put(...) 方法已被弃用,取而代之的是 .putData(Uint8List) 和 .putFile(...),我还没有找到解决方案还适用于 Flutter Web。
我正在尝试的代码是这样的,但它没有返回任何内容或抛出任何错误。
_startFilePicker() async {
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen((e) {
// read file content as dataURL
final files = uploadInput.files;
if (files.length == 1) {
final file = files[0];
FileReader reader = FileReader();
reader.onLoadEnd.listen((e) async {
setState(() {
uploadedImage = reader.result;
});
await uploadImage();
});
reader.onError.listen((fileEvent) {});
reader.readAsArrayBuffer(file);
}
});
}
Future uploadImage() async {
StorageReference storageReference =
FirebaseStorage.instance.ref().child(userID + '/userPhoto');
try {
StorageUploadTask uploadTask = storageReference.putData(uploadedImage);
await uploadTask.onComplete;
} catch (e) {
print(e);
}
print('File Uploaded');
storageReference.getDownloadURL().then((fileURL) {
setState(() {
_formData['photo'] = fileURL;
updateUserData({'photo': fileURL});
});
});
}
有什么我做错或更好的方法吗?
【问题讨论】:
标签: firebase-storage flutter-web