【问题标题】:Get file path from system directory using Flutter web (chrome) to read file content Eg: CSV or Text file使用 Flutter web (chrome) 从系统目录获取文件路径以读取文件内容 例如:CSV 或文本文件
【发布时间】:2021-05-07 23:58:37
【问题描述】:

尝试过的包:https://pub.dev/packages/file_picker

尝试了通过 GitHub 共享的示例代码实现。但是文件路径返回为null for 网络平台。移动平台中的相同实现按预期返回路径。

https://github.com/miguelpruivo/flutter_file_picker/blob/master/example/lib/src/file_picker_demo.dart

注意事项:

  1. Path_Provider - 不支持网络
  2. dart-io-library - 不支持网络
  3. Flutter Repo 中打开问题

目标是从路径中读取文件而不是上传。实现此目的的任何解决方法都会有所帮助。

Flutter 频道:测试版

【问题讨论】:

    标签: flutter flutter-web


    【解决方案1】:

    我有一个从计算机中挑选图像的功能。可能对你有用。

    
    import 'dart:html';
    
    void uploadImage({@required Function(File file) onSelected}) {
      InputElement uploadInput = FileUploadInputElement()..accept = 'image/*';
      uploadInput.click();
    
      uploadInput.onChange.listen((event) {
        final file = uploadInput.files.first;
        final reader = FileReader();
        reader.readAsDataUrl(file);
        reader.onLoadEnd.listen((event) {
          onSelected(file);
        });
      });
    }
    
    

    【讨论】:

      【解决方案2】:

      file_picker中提到的FAQ:

      浏览器无法访问路径,因为它们提供了虚假路径。如果您想创建一个 File 实例以将其上传到某个地方,例如 FireStorage,您可以直接使用字节来执行此操作。

      final result = await FilePicker.platform.pickFiles(type: FileType.any, allowMultiple: false);
      
      if (result.files.first != null){
        var fileBytes = result.files.first.bytes;
        var fileName = result.files.first.name;
        print(String.fromCharCodes(fileBytes));
      }
      

      【讨论】:

      • 感谢您的String.fromCharCodes(fileBytes)。不知道这是可能的。
      猜你喜欢
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多