2015-07-13 126 views
0

根據我的要求,想要爲我的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

回答

1

資產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