【问题标题】:File_Picker plugin doesn't return absolute path for write file in FlutterFile_Picker 插件不返回 Flutter 中写入文件的绝对路径
【发布时间】:2021-06-07 00:36:15
【问题描述】:

我正在使用 file_picker 插件从我的颤振应用程序的设备存储中挑选文件。我需要一个绝对路径,以便我可以读/写文件。但是使用 file_picker 插件选择文件只返回存储在应用程序缓存中的复制文件的路径(文件加载和缓存在:/data/user/0/com.example.file_locker/cache/file_picker/Screenshot_2021-03-09 -00-59-58-834_com.linkedin.android.jpg )。

我正在使用 file_picker: ^2.1.6

file_picker 存储库问题here

现在,是否有任何解决方案可以从 file_picker 获取绝对路径,以便我可以读取/写入文件? 我被困在我的项目上,您的解决方案将不胜感激。

我见过其他文件资源管理器插件,如果您知道其他返回所需解决方案的其他插件,它们也采用相同的方式,请告诉我。

提前谢谢你。

【问题讨论】:

标签: android flutter plugins absolute-path filepicker


【解决方案1】:

pickFile 的路径在插件页面示例中的 path 属性中作为 state 可用:

FilePickerResult result = await FilePicker.platform.pickFiles();

if(result != null) {
   PlatformFile file = result.files.first;
   
   print(file.name);
   print(file.bytes);
   print(file.size);
   print(file.extension);
   print(file.path);
}

如果您的目标是将 pickFile 写入应用程序文档目录或临时目录中的文件,您可以使用 path_provider:https://pub.dev/packages/path_provider

// Get the application document directory
Directory appDocDir = await getApplicationDocumentsDirectory();
// Get the absolute path
String appDocPath = appDocDir.path;
// Copy it to the new file
final File newFile = await file.copy('$appDocPath/your_file_name.${file.extension}');

【讨论】:

  • 我的目标是选择文件并复制它们的路径,然后将它们从设备存储的当前位置删除。根据您的建议,我可以为副本执行此操作,但我也有必要将其从原始位置删除。您能否提供任何解决方案来实现这一目标? @Arnaud
  • 我不是 100% 确定,但我认为你不能这样做,你只能在应用程序文件夹中写入/删除
  • 是的!我们可以在我们的应用程序文件夹中执行此操作。我希望有其他方法可以解决我的问题。顺便说一句,谢谢您的回复。
【解决方案2】:
await FilePicker.platform.getDirectoryPath();

【讨论】:

    【解决方案3】:

    我也遇到过这个问题,问题是新版本的file_picker没有提供绝对路径。您可以使用旧版本的 file_picker 包。这工作正常,并通过使用函数为您提供绝对路径:

    1. FilePicker.getMultiFilePath();
    2. FilePicker.getFilePath();

    (谷歌这些以获得更多信息。)

    您需要在 Flutter 中禁用 null 安全性才能使用这些较低版本的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多