【问题标题】:Convert Ios Photo Album path url same like as Document directory File-path转换 iOS 相册路径 url 与文档目录 File-path 相同
【发布时间】:2015-10-01 15:22:45
【问题描述】:

根据我的要求,想要访问我的 GCDWebUploader 的 iOS 设备照片应用程序文件 url(不是作为数据的文件)。我想要我的网络服务器的资产库网址。

NSString* documentsPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

_webServer = [[GCDWebUploader alloc] initWithUploadDirectory: documentsPath];
// this is working and document directory files shown on browser.

_webServer = [[GCDWebUploader alloc] initWithUploadDirectory:assetsUrl];  // this is not working.Nothing shown on browser.   //assetsUrl= assets library url for file from photos app

_webServer.delegate = self;
_webServer.allowHiddenItems = YES;
[_webServer start];

如果文档目录,我的网络服务器会在 PC 浏览器上显示所有照片应用程序图像和视频。此功能已使用 GCDWebUploader 完成。但我找不到资产 url 的行为类似于文件路径。

我不想将照片应用程序文件复制到文档目录并使用。而是直接从资产库访问。

我希望资产 url 像文档目录文件路径一样工作。请帮助我。

【问题讨论】:

  • 我已将图片上传到文档目录,但图片未在浏览器中显示。你能帮我在浏览器中显示图片吗?

标签: ios alassetlibrary gcdwebserver nsdocumentdirectory-ios8


【解决方案1】:

资产 URL 如下所示:

assets-library://asset/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG

这是ALAssetsLibrary 的内部 URL,在此上下文之外没有任何意义。您不能指望将此 URL 传递给 GCDWebServer 并期望服务器会神奇地使用它。

此外,根据定义,GCDWebServer 只能提供带有HTTP 方案的 URL,主机名与您的 iPhone/iPad 网络名称匹配,以及您已为其实现处理程序的路径。

例如,如果您为路径/photos/index.html 实现了GET 处理程序,那么使用Web 浏览器http://my-device.local/photos/index.html 连接到您的iPhone/iPad 将调用GCDWebServer 上的相应处理程序,然后可以返回一些内容(如 HTML 网页或图像文件)。

但是,从您的网络浏览器连接到 assets-library://asset/asset.JPG 并没有任何意义,并且会失败。

如果您在 GCDWebServer 中没有针对该路径的 GET 处理程序,则连接到 http://my-device.local/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG 也会失败。

简而言之,要使用 GCDWebServer 从ALAssetsLibrary 提供照片,您可以这样做:

  1. 实现一个默认处理程序来捕获所有GET 请求
  2. GET/index.html 的请求实现一个处理程序(您必须将其添加到GCDWebServer 实例默认处理程序之后)

/index.html 处理程序的实现中,您返回一个 HTML 网页,其中列出了来自 ALAssetsLibrary 的照片资源的 URL,每个资源都有一个相对 URL 链接,如 <a href="/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG">My photo link</a>(资产 URL)。

在默认处理程序的实现中,您检索GCDWebServerRequest 的路径,添加assets-library://asset,然后返回原始资产URL:assets-library://asset/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG。使用此 URL,您最终可以检索资产数据,即 JPEG 图像,并使用 GCDWebServerDataResponse 将其返回(不要忘记将 MIME 类型设置为 image/jpeg)。

【讨论】:

  • 感谢 Pol 的回答。我将尝试实现这一点,如果这解决了我的问题,那么我将接受这个答案。再次感谢您的时间。
猜你喜欢
  • 2011-05-27
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 2015-01-24
  • 2018-05-05
  • 2022-01-01
  • 2017-05-09
相关资源
最近更新 更多