【问题标题】:Flutter - how to save a file on IOSFlutter - 如何在IOS上保存文件
【发布时间】:2020-04-17 11:09:37
【问题描述】:

在 Android 上,我可以使用包 downloads_path_provider 在 Downloads 文件夹中下载 pdf 文件,但在 IOS 上,使用此包时出现错误。 如果我使用getApplicationDocumentsDirectory(),我会得到路径:/var/mobile/Containers/Data/Application/EBB52CAB-7783-489A-B9C4-4BB7A093B8C3/Documents 我想将下载文件放在 iphone 的文件中

【问题讨论】:

    标签: ios flutter


    【解决方案1】:

    您应该使用Path Provider 来访问不仅仅是设备上的下载目录,它是官方的 Flutter 插件并且易于使用。

    要使用Path Provider 访问存储上的文档目录,请使用以下命令:

     Directory documents = await getApplicationDocumentsDirectory();
    

    这将允许您将文件存储在文档存储中,您可能需要添加访问存储的权限。

    安卓使用:

     Directory documents = await getExternalStorageDirectory();
    

    请记住,以上两个目录对用户都是可见的。

    【讨论】:

    • 我发现了另一个问题link,它解释了如何做到这一点,它现在正在工作,但它也用我要保存的 pdf 文件保存其他文件,我不知道为什么...
    • 还有哪些文件?
    • 这是我的应用程序中的一些文件,例如带有日志文件的 firestore 文件夹
    • 您似乎正在使用相同的方法来下载/存储所有文件。你能分享你提供目录或进程文件存储的代码吗?
    • 我正在使用 dio 包下载文件await dio.download(url, '${saveDir}/${widget.document.fileName}'); 这是我的 dio 下载调用
    【解决方案2】:

    获取路径

    要访问 Document 目录,您应该使用 Flutter 插件来查找文件系统上的常用位置。最受欢迎的是path_provider

    iOS 文件应用

    若要在用户设备上的 Files 应用内下载应用文件夹中的文件,您应该更新 info.plist。

    UISupportsDocumentBrowser (Boolean - iOS) 指定应用是基于文档的应用并使用 UIDocumentBrowserViewController 类。

    如果此键设置为 YES,用户可以在设置中设置文档浏览器的默认保存位置。此外,本地文件提供程序授予对应用程序 Documents 目录中所有文档的访问权限。这些文档出现在“文件”应用程序和“文档浏览器”中。用户可以就地打开和编辑这些文档。

    iOS 11 及更高版本支持此键。

    有关更多信息,请阅读文档: https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW37

    【讨论】:

    • 嘿,谢谢你的帮助。你知道是否可以只显示一些文件?而其他人不是?
    • 谢谢,与 Flutter_downloader 一起使用
    • 在 ios 10 中,我可以在哪里看到下载的文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2020-05-06
    • 2020-01-30
    • 2021-03-04
    • 2022-10-15
    • 2022-10-01
    相关资源
    最近更新 更多