【问题标题】:What is the best way to upload a file/photo from an iOS device?从 iOS 设备上传文件/照片的最佳方式是什么?
【发布时间】:2017-07-31 09:35:11
【问题描述】:

场景如下:我的应用程序具有帐户系统,用户可以在其中登录/注销应用程序,从而使其他用户也可以使用同一 iOS 设备登录。成功登录后,它会从网站下载文件(如 pdf、ppt 等),然后我将它们放在应用程序的本地目录中(文件分隔在以每个用户的 user_id 命名的文件夹中)。因此,如果用户将使用应用程序上传文件,我应该从哪个目录获取文件?

从以下位置获取文件/照片:

  • A) 本地文件应用程序目录(缺点: 能够查看其他用户的目录)
  • B) iCloud 文档(缺点:我不确定这是否是 iOS 用户通常使用的存储方式,或者未放置在 iCloud 中的文件如何?)李>
  • C) 本地文件app目录并限制与user_id不匹配的文件夹(这可能吗)
  • D) 其他

【问题讨论】:

  • “如果用户将使用该应用上传文件”:您的意思是您将其上传到您的服务器/网站并在本地保存文件的副本??
  • 我只想上传来自 iOS 设备的文件,这意味着它可能位于照片、iCloud 或其他人们可以将文件保存到的地方
  • 我不确定 iPhone 用户如何存储他们下载的文档。 iOS 没有文件管理器(如 Android),但我知道 iOS 中的每个应用程序都是沙盒

标签: ios security swift3 icloud nsfilemanager


【解决方案1】:

这就是上传在 iOS 中的正常工作方式。

您将要上传的文件复制到应用程序的临时目录,然后使用后台会话配置创建上传任务并将文件路径(临时文件夹路径)传递给上传任务。

为什么要传递文件路径??

如果您将后台会话与上传任务一起使用,则当前后台会话的设计限制您提供任务的文件路径,这意味着您既不能流式传输也不能将二进制文件传递给上传任务(通过二进制文件我的意思是你可以'不在任何变量中保存文件数据)

为什么要使用后台会话?

如果您希望应用程序继续上传,即使用户将应用程序置于后台甚至终止应用程序(一旦上传任务开始),那么后台会话是您唯一的机会:)

为什么我应该只将文件复制到临时目录??

退出应用程序后,临时目录中复制的文件将暂时保留在目录中通过 iCloud。

总结:

  1. 用户选择文件后,将其复制(如果本地可用,如照片库)或下载(如果文件保存在云端)到应用的临时目录。

  2. 使用后台会话创建上传任务并将文件路径传递给任务:)

  3. 喝杯茶/咖啡并开始调试以解决问题:)

【讨论】:

  • 您好,谢谢!但是我应该在哪里获取文件?来自本地目录,还是 iCloud 文档?
  • 例如,我从另一个网站(使用应用网络浏览器)下载了一个 pdf,将其存储到我的 iOS 设备,那么我的应用将如何检索这个文件?
  • 如果用户选择照片库中的图像,您会将图像从照片库复制到应用沙箱的临时目录。如果您的应用下载了您在上面的 cmets 中指定的 pdf 文件,您知道您将该文件保存在哪里,例如您的应用的 doc 目录现在复制该文件并通过代码将其放入您的应用的临时文件夹中
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多