As per my requirement, want to access iOS device photos app file url (not file as data) for my GCDWebUploader. I want assets library url for my web server.
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];
my web-server display all the photos app images and videos on pc browser if document directory.this functionality already done using GCDWebUploader. but I can't find asset url behave like file path.
I don't want to copy the photos app files into document-directory and use.but directly access from assets library.
I want assets url work same like document directory filepath. please help me for that.
An asset URL looks like this:
This is an internal URL to
ALAssetsLibrarywhich means nothing outside of this context. You can't expect to pass this URL to GCDWebServer and expect the server to magically do something with it.Furthermore, GCDWebServer by definition can only serve URLs with the
HTTPscheme, with the hostname matching your iPhone/iPad network name, and with paths for which you have implemented handlers.For instance if you have implemented a
GEThandler for the path/photos/index.html, then connecting to your iPhone/iPad using your web browser athttp://my-device.local/photos/index.htmlwill call the corresponding handler on GCDWebServer, which then can return some content (like an HTML web page or an image file).Connecting however to
assets-library://asset/asset.JPGfrom your web browser doesn't mean anything and will fail.Connecting to
http://my-device.local/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPGwill also fail if you don't have aGEThandler in GCDWebServer for that path.So in a nutshell, to serve photos from
ALAssetsLibraryusing GCDWebServer, you can do it as such:GETrequestsGETrequests to/index.html(you must add it to the GCDWebServer instance after the default handler)In the implementation of the
/index.htmlhandler, you return an HTML web page that lists the URLs of the photo assets fromALAssetsLibrary, each of them having a relative URL link like<a href="/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG">My photo link</a>(the path portion of the asset URL).In the implementation of the default handler, you retrieve the path of the
GCDWebServerRequest, prependassets-library://asset, and that gives you back the original asset URL:assets-library://asset/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG. With this URL, you can finally retrieve the asset data, i.e. the JPEG image, and return it using aGCDWebServerDataResponse(don't forget to set the MIME type toimage/jpeg).