转换Ios相册路径url与文档目录相同文件路径

问题描述:

根据我的要求,想要为我的GCDWebUploader访问iOS设备照片应用程序文件url(不是文件数据)。我想要我的Web服务器的资产库网址。转换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]; 

我的web服务器显示的所有照片应用程序的图片和视频在PC浏览如果文档directory.this功能已经在使用GCDWebUploader完成。但我无法找到资产网址的行为像文件路径。

我不想将照片应用程序文件复制到文档目录和use.but直接从资产库访问。

我希望资产url的工作与文档目录filepath相同。请帮助我。

+0

我已经上传图像在文档目录中,但图像不显示在浏览器中。你能帮我在浏览器中显示图像吗? – Bhumi

资产URL看起来像这样:

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

这是一个内部URL来ALAssetsLibrary这意味着在此语境之外什么都没有。你不能指望把这个URL传递给GCDWebServer,并期望服务器神奇地做些什么。

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

举例来说,如果你已经实现了GET处理程序路径/photos/index.html,然后连接到您的iPhone/iPad上使用Web浏览器在http://my-device.local/photos/index.html将拜会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)将其返回。

+0

谢谢,波尔你的答案。我会尽力实现这一点,如果这解决了我的问题,那么我会接受这个答案。感谢你的宝贵时间。 – Jashu