如何在ios的objective-c中从设备中选择任何文档文件

Posted

技术标签:

【中文标题】如何在ios的objective-c中从设备中选择任何文档文件【英文标题】:how to choose any document file from device in objective-c in ios 【发布时间】:2016-10-24 10:28:17 【问题描述】:

如何从设备访问任何文档文件到我们的应用程序以上传到服务器并从服务器下载,保存在设备中而不是应用程序中,谁能帮助我如何做到这一点? 我搜索了很多天,但我没有得到任何关于如何从设备获取文件的解决方案。

UIDocumentInteractionController *pdfPicker = [[UIDocumentInteractionController alloc] init];
pdfPicker.delegate = self; // ensure you set the delegate so when a PDF is chosen the right method can be called

[self presentViewController:pdfPicker animated:YES completion:nil];

我也实现了此代码,但它使应用程序崩溃。请帮助我,在此先感谢。

【问题讨论】:

您想要您的应用文档或其他应用文档??? 我需要从 pdf、ppt 等设备中获取所有文档。是否可以在 ios 中获取? 不,亲爱的,您无法获取其他应用程序或设备文档是的,但并非完全可以通过 iOS 的应用程序扩展功能实现这一点,并在您的应用程序中获取其他应用程序文档。 【参考方案1】:

不可能,您无法从您的应用中获取其他应用中可用的文档列表。但是,如果您想将文件从其他应用程序带到您的应用程序,您可以实现以下操作:

1) 通过在 plist 中定义所需的值来注册您的应用程序以支持文件类型。这样,当用户在邮件、Safari 或其他应用程序中看到文件时,他们会看到您的应用程序以选项打开。 how to register the app to open the pdf file in my app in ipad

2) 创建共享扩展:每当用户共享您支持的文件时,他们都会在选项中看到您的应用。

Code to share file path/file between a share extension and iOS app

从上面的两个选项中,您将获得选定的文档路径到您的应用程序中。如果需要,您可以将该文档上传到服务器。

【讨论】:

如果您的答案主要是关于链接其他 *** 答案,它应该是评论而不是答案【参考方案2】:

无法在应用程序的沙盒之外访问 iOS 设备中的所有文件。你可以做的是:

使用 UIImagePickerController 访问图库中的所有文件。 访问网络中的所有用户文件 - Dropbox/Google 驱动器/iCloud。它们都有单独的公共 API,可以下载并用于在网络中下载/上传文件。

通过这种方式,您可以访问大部分用户文件并在您的应用程序中使用它们。

【讨论】:

以上是关于如何在ios的objective-c中从设备中选择任何文档文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有 cordova 的 iOS 设备中从 iCloud 读取文件?

在 Objective-C 中从第三方应用程序中移交给 Apple Maps 应用程序

我需要在 iOS 应用程序中从 SpriteKit GameViewController 转换为常规视图控制器(Objective-C)

在 XCode 中从 Objective-C 访问 JavaScript 变量

如何在 iOS 应用程序中从蓝牙 LE 设备获取通知

如何在 Objective-C 中从 mysql 数据库中填充 NSArray?