Не удается загрузить изображение в хранилище Firebase из flutter web

#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) .