使用 Flutter web (chrome) 从系统目录获取文件路径以读取文件内容 例如:CSV 或文本文件
Posted
技术标签:
【中文标题】使用 Flutter web (chrome) 从系统目录获取文件路径以读取文件内容 例如:CSV 或文本文件【英文标题】:Get file path from system directory using Flutter web (chrome) to read file content Eg: CSV or Text file 【发布时间】: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
注意事项:
-
Path_Provider - 不支持网络
dart-io-library - 不支持网络
在Flutter Repo 中打开问题
目标是从路径中读取文件而不是上传。实现此目的的任何解决方法都会有所帮助。
Flutter 频道:测试版
【问题讨论】:
【参考方案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)
。不知道这是可能的。以上是关于使用 Flutter web (chrome) 从系统目录获取文件路径以读取文件内容 例如:CSV 或文本文件的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 程序在 Chrome 上运行正常,但在 Web 服务器上无法正常运行