根据我的要求,想要访问我的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完成。但我发现资产网址的行为与文件路径不同。
我不想将照片应用文件复制到文档目录并使用。但是可以直接从资源库访问。
我希望资源网址与文档目录文件路径一样工作。请帮助我。
答案 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
提供照片,您可以这样做:
GET
个请求GET
实现/index.html
个请求的处理程序(必须在默认处理程序之后将其添加到GCDWebServer实例)在/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
)。