How to Pick files and Images for upload with flutter web

后端 未结 2 2046
失恋的感觉
失恋的感觉 2020-12-15 21:45

I would like to know how to pick an Image from the users computer into my flutter web app for upload

相关标签:
2条回答
  • 2020-12-15 22:00

    I've tested this package and was very happy with the result imagePickerWeb it returns 3 different types it can be in the form of Image(widget for preview), byte, File(upload)

    then you can use this to get the values

    html.File _cloudFile;
     var _fileBytes;
     Image _imageWidget;
     
     Future<void> getMultipleImageInfos() async {
        var mediaData = await ImagePickerWeb.getImageInfo;
        String mimeType = mime(Path.basename(mediaData.fileName));
        html.File mediaFile =
            new html.File(mediaData.data, mediaData.fileName, {'type': mimeType});
    
        if (mediaFile != null) {
          setState(() {
            _cloudFile = mediaFile;
            _fileBytes = mediaData.data;
            _imageWidget = Image.memory(mediaData.data);
          });
        }
    

    Uploading to firebase

    don't forget to add this to your index.html

      <script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-storage.js"></script>
    

    Uploading to firebase

    import 'package:firebase/firebase.dart' as fb;
        uploadToFirebase(File file) async {
    
        final filePath = 'temp/${DateTime.now()}.png';//path to save Storage
        try {
          fb
              .storage()
              .refFromURL('urlFromStorage')
              .child(filePath)
              .put(file);
        } catch (e) {
          print('error:$e');
        }
      }
    

    See the documentation of the package if you still have problems

    0 讨论(0)
  • 2020-12-15 22:12

    I tried the code below and it worked.

    first import 'dart:html';

    // variable to hold image to be displayed 
    
          Uint8List uploadedImage;
    
    //method to load image and update `uploadedImage`
    
    
        _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) {
                        setState(() {
                          uploadedImage = reader.result;
                        });
            });
    
            reader.onError.listen((fileEvent) {
              setState(() {
                option1Text = "Some Error occured while reading the file";
              });
            });
    
            reader.readAsArrayBuffer(file);
          }
        });
        }
    

    now just any Widget, like a button and call the method _startFilePicker()

    0 讨论(0)
提交回复
热议问题