File_Picker 插件不返回 Flutter 中写入文件的绝对路径

Posted

技术标签:

【中文标题】File_Picker 插件不返回 Flutter 中写入文件的绝对路径【英文标题】:File_Picker plugin doesn't return absolute path for write file in 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 获取绝对路径,以便我可以读取/写入文件? 我被困在我的项目上,您的解决方案将不胜感激。

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

提前谢谢你。

【问题讨论】:

你试过pub.dev/packages/flutter_absolute_path吗? 【参考方案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 包。这工作正常,并通过使用函数为您提供绝对路径:

    FilePicker.getMultiFilePath(); FilePicker.getFilePath();

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

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

【讨论】:

以上是关于File_Picker 插件不返回 Flutter 中写入文件的绝对路径的主要内容,如果未能解决你的问题,请参考以下文章

Flutter file_picker插件无法构建项目

Flutter file_picker 包为所有文件详细信息提供空值

pod install 错误:给定 podspec 'file_picker' 的名称与预期的 'gx_file_picker' 不匹配

Flutter点击返回键,回到桌面,但不退出APP的实现

用户如何选择特定的文件位置在 Flutter 中保存文件

Flutter开发之Android物理按键返回