#flutter #firebase-storage #flutter-dependencies #flutter-web
# #flutter #firebase-хранилище #flutter-зависимости #flutter-web
Вопрос:
итак, я попробовал это, чтобы получить изображение и загрузить его:
var file;
html.InputElement uploadInput = html.FileUploadInputElement()
..accept = "image/*";
uploadInput.click();
uploadInput.onChange.listen((event) {
file = uploadInput.files.first;
final reader = html.FileReader();
reader.readAsDataUrl(file);
reader.onLoadEnd.listen((event) async {
print("done");
StorageReference storageReference = FirebaseStorage.instance
.ref()
.child('${widget.uid}/${DateTime.now()}');
StorageUploadTask uploadTask = storageReference.putData(file);
await uploadTask.onComplete;
print('File Uploaded');
print(storageReference.path);
storageReference.getDownloadURL().then((fileURL) {
setState(() {
_uploadedFileURL = fileURL;
});
});
});
});
однако, как показано в руководстве, парень использует .put(), а не putData(), но теперь он устарел, поэтому при использовании .put() я получаю:
Ожидалось значение типа ‘File’, но получено значение типа ‘File$’
и с помощью .putData() я получаю:
Ожидалось значение типа ‘Uint8List’, но получено значение типа ‘File$’
Есть идеи, как я мог бы преобразовать File $ или напрямую импортировать файл или Uint8List от пользователя из Flutter Web? Спасибо
Ответ №1:
Попробуйте reader.readAsArrayBuffer(file)
и storageReference.putData(reader.result)
.