获取 Flutter Web 上传文件的路径

Ren*_*azo 9 flutter flutter-web

我面临的主要问题是(在 Web 平台上):

我正在使用 Flutter 为 Android 和 Web 平台开发应用程序。我设法上传了一个文件(二维码的图像),但我使用的是 qr_code_tools 插件,我需要提供这样的文件路径:

resultDecodeStr = await QrCodeToolsPlugin.decodeFrom(path);
Run Code Online (Sandbox Code Playgroud)

这是如何上传图像文件的代码(在网络平台上):

Future<File> pickFile() async {
   final Map<String, dynamic> data = {};
   final FileUploadInputElement input = FileUploadInputElement();
   input..accept = 'image/*';
   input.click();
   await input.onChange.first;
   if (input.files.isEmpty) return null;
   return input.files[0];
}
Run Code Online (Sandbox Code Playgroud)

返回的文件对象有一个属性“relativePath”,它是空的。

在 Android 上,我使用了类似的东西,但它确实有一个路径,如果没有,我可以获得一个临时目录(使用 path_provider)并创建一个新文件(使用 dart.Io)。但这对网络来说是不可能的,两个插件(path_provider 和 dart Io)都没有兼容性......

请我希望得到一些帮助...

Gre*_*rad 2

使用您提供的库,看起来不可能做您想做的事情。将文件上传到网络与在设备上上传不同,因为您获得的 dart:html 文件副本与 dart:io 文件具有不同的限制/属性。查看该库后,它看起来并不支持从字节解码(并且仅从路径),由于浏览器安全性的工作方式,您无法做到这一点(您无法访问文件系统,但有可能将来会这样)。要在浏览器中工作,它应该允许从字节解码(因为您可以读取 dart:html 文件的字节)。另请参阅:使用 JavaScript 访问本地文件

因此,您要么必须分叉该库并制作自己的字节解码器,要么使用完全不同的库来支持 Web。