Преобразование URL-адреса пути к фотоальбому Ios так же, как в каталоге документов. Путь к файлу

Согласно моему требованию, вы хотите получить доступ к URL-адресу файла приложения для фотографий устройства iOS (а не к файлу как к данным) для моего GCDWebUploader. Мне нужен 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];

мой веб-сервер отображает все изображения и видео приложения для фотографий в браузере ПК, если каталог документов. Эта функция уже реализована с помощью GCDWebUploader. но я не могу найти URL-адрес актива, который ведет себя как путь к файлу.

Я не хочу копировать файлы приложения для фотографий в каталог документов и использовать, но напрямую обращаться к библиотеке активов.

Я хочу, чтобы URL-адрес ресурсов работал так же, как путь к файлу каталога документов. Пожалуйста, помогите мне в этом.


person Jashu    schedule 13.07.2015    source источник
comment
Я загрузил изображение в каталог документов, но изображение не отображается в браузере. Не могли бы вы помочь мне отобразить изображение в браузере?   -  person Bhumika    schedule 17.02.2017


Ответы (1)


URL ресурса выглядит следующим образом:

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

Это внутренний URL-адрес ALAssetsLibrary, который ничего не значит вне этого контекста. Вы не можете ожидать передачи этого URL-адреса GCDWebServer и ожидать, что сервер волшебным образом что-то с ним сделает.

Кроме того, GCDWebServer по определению может обслуживать только URL-адреса со схемой HTTP, с именем хоста, соответствующим сетевому имени вашего iPhone/iPad, и с путями, для которых вы внедрили обработчики.

Например, если вы реализовали обработчик GET для пути /photos/index.html, то подключение к вашему iPhone/iPad с помощью веб-браузера по адресу http://my-device.local/photos/index.html вызовет соответствующий обработчик на GCDWebServer, который затем может вернуть некоторый контент (например, веб-страницу HTML или изображение). файл).

Однако подключение к assets-library://asset/asset.JPG из веб-браузера ничего не значит и не удастся.

Подключение к http://my-device.local/asset.JPG?id=CD12228F-0E99-4ABD-999D-6A76F54024E7&ext=JPG также не удастся, если у вас нет обработчика GET в GCDWebServer для этого пути.

Вкратце, чтобы предоставить фотографии из ALAssetsLibrary с помощью GCDWebServer, вы можете сделать это следующим образом:

  1. Реализовать обработчик по умолчанию для перехвата всех GET запросов.
  2. Реализовать обработчик запросов GET к /index.html (его необходимо добавить в экземпляр GCDWebServer после обработчика по умолчанию)

В реализации обработчика /index.html вы возвращаете веб-страницу HTML, на которой перечислены URL-адреса фоторесурсов из ALAssetsLibrary, каждый из которых имеет относительную 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).

person Pol    schedule 03.08.2015
comment
Спасибо, Пол за ответ. я попытаюсь реализовать это, и если это решит мою проблему, я приму этот ответ. Еще раз спасибо за ваше время. - person Jashu; 03.08.2015