转换Ios相册路径网址与文档目录文件路径

时间:2015-07-13 11:23:51

标签: ios alassetlibrary gcdwebserver nsdocumentdirectory-ios8

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

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完成。但我发现资产网址的行为与文件路径不同。

我不想将照片应用文件复制到文档目录并使用。但是可以直接从资源库访问。

我希望资源网址与文档目录文件路径一样工作。请帮助我。

1 个答案:

答案 0 :(得分:2)

资产网址如下所示:

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

这是ALAssetsLibrary的内部网址,这意味着在此上下文之外没有任何内容。您不能指望将此URL传递给GCDWebServer,并期望服务器神奇地对其进行操作。

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

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

然而,从您的网络浏览器连接到assets-library://asset/asset.JPG并不意味着什么,并且会失败。

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

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

  1. 实现默认处理程序以捕获所有GET个请求
  2. GET实现/index.html个请求的处理程序(必须在默认处理程序之后将其添加到GCDWebServer实例
  3. /index.html处理程序的实现中,您将返回一个HTML网页,其中列出了来自ALAssetsLibrary的照片资产的网址,每个网页都有<a href="/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG">My photo link</a>之类的相对网址链接(资产URL的路径部分)。

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