Конвертировать URL пути Ios Photo Album так же, как в папке с документами File-path
Согласно моему требованию, я хочу получить доступ к 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 ресурсов работал так же, как путь к каталогу документов. пожалуйста, помогите мне за это.
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, вы можете сделать это так:
- Реализуйте обработчик по умолчанию, чтобы перехватить все
GET
Запросы - Реализовать обработчик для
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
).