如何在 iPhone 中快速从文件路径 url 获取视频或图像?

Posted

技术标签:

【中文标题】如何在 iPhone 中快速从文件路径 url 获取视频或图像?【英文标题】:How to get video or image from file path url in swift in iPhone? 【发布时间】:2018-08-29 12:04:18 【问题描述】:

我在从以下网址获取视频时遇到权限问题:

"file:///var/mobile/Media/DCIM/101APPLE/IMG_1111.mp4"

我收到以下错误,同时要从上面的 url 获取数据:

Error Domain=NSCocoaErrorDomain Code=257 "无法打开文件“IMG_1111.mp4”\342\200,因为您没有查看权限。" UserInfo=NSFilePath=/var/mobile/Media/DCIM/101APPLE/IMG_1111.mp4, NSUnderlyingError=0x1c0440f30 Error Domain=NSPOSIXErrorDomain Code=1 "Operation not allowed"

我获取数据的代码是:

do 
     let fileData = try Data.init(contentsOf:urlCheck)
     print(fileData)
    catch  
     print(error)
   

任何帮助将不胜感激。 谢谢

【问题讨论】:

你确定你的 urlCheck 是使用 let urlCheck = NSURL(fileURLWithPath: filePath) ??? 你在游乐场吗? @AnkitKushwah 我用 let fileData = try Data.init(contentsOf:NSURL(fileURLWithPath: urlCheck.absoluteString) as URL) 改变了这一点 --- 但还是一样 @puja 你能先试试模拟器吗?? do let Data = try Data(contentsOf: urlCheck l as URL) catch print("无法加载数据:(错误)") 【参考方案1】:

我认为您不能从不属于您的应用程序的任何文件夹或路径访问文件。 该文件只能放在应用程序文件夹中。 Document、Temp 或其他文件夹。

这是因为所有应用程序都是沙盒化,因此无法直接访问其他应用程序的数据。

如果您尝试从“照片”或任何其他应用程序访问数据,则需要在读取之前将其保存到应用程序的沙盒目录中。

参考:ios Application Sandboxing

【讨论】:

应用程序的沙盒目录你说的是 NSDocumentDirectory 还是 NSApplicationSupportDirectory ? 您可以使用 DocumentDirectory。因为 ApplicationSupportDirectory 在应用程序的沙箱中默认不存在。

以上是关于如何在 iPhone 中快速从文件路径 url 获取视频或图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过绝对路径从 iPhone 上的视频文件中读取流

从 URL 下载文件并将其放在 iPhone 的 Resource 文件夹中

如何获取从 iPhone 库中选择的多个图像的路径?

如何快速从文件路径中获取文件名

从 URL 下载到本地存储的快速图像

如何使用 htaccess 从 url 中删除文件夹名称