我正在尝试为我的文件对话框库编写一个 Flatpak 门户后端。这意味着我没有使用 GTK 或其他一些 GUI 库来显示文件选择器,而是对org.freedesktop.portal.FileChooser端点进行 D-Bus 进程间调用,接收我的调用的门户后端将显示本机文件选择器给用户。我的文件对话框库并不是真的打算与 Flatpak 一起使用,但它使用 Flatpak 门户,因为这似乎是打开可由用户自定义的本机对话框的新的事实上的标准方式(例如 GTK 或 KDE )。然后,门户后端返回一个字符串数组,其中包含所选文件的 URI。
但是,将返回所选文件的URI,这意味着/home/bernard/Documents/myfile.txt
我得到的是file:///home/bernard/Documents/myfile.txt
.
去掉前缀很简单file://
,但这提出了一个问题,即我是否可能得到一个不以 . 开头的 URI file://
。当然,我确实按照 D-Bus 的建议验证了返回的字符串,因为门户后端的实现不在我的控制范围内。但是,我的问题是是否允许门户后端返回非文件 URI,假设实现没有错误。这将确定非文件 URI 是否应该被视为门户后端错误,或者应用程序应该准备的东西(例如,通过在将文件传递给fopen
和朋友之前下载 http URI)。
Flatpak 门户文档似乎在任何地方都说“文件”,除了它说“所选文件的 URI”将被返回的地方,所以看起来我应该只得到一个文件 URI。但是,该文档专门针对 Flatpak 沙盒应用程序,因为它还说返回的 URI 将指向文档门户 fuse 文件系统,当应用程序未沙盒时,情况并非如此。
没有办法告诉门户后端只允许本地文件,就像在 GTK3(但不是 GTK4)中那样。
是否可以假设门户后端的正确实现只会返回文件 URI?