2015-09-21 94 views
0

我正嘗試使用Alamofire將圖像上傳到服務器。當我使用以下所有功能都可以正確使用保存在軟件包中的測試圖像。使用Alamofire從UIImagePickerController上傳圖像

func uploadImage() 
{ 
    let fileURL = NSBundle.mainBundle().URLForResource("Uploadtest", withExtension: "jpg") 
    Alamofire.upload(.PUT, url + "/api/Image" + id, file: fileURL!).responseString { 
     _, _, result in 
     print("Success: \(result.isSuccess)") 
     print("Response String: \(result.value)") 
    } 
} 

但是,我希望從UIImagePickerController上傳圖像。 Alamofire上傳方法將文件url作爲參數,而我從UIImagePickerController獲取UIImage的實例。我應該將此圖像保存到文檔或類似文件中,然後獲取該位置的URL以傳遞到Alamofire上傳方法?這是可能的還是有另一種方式我想念?

+0

在你的'UIImagePickerDelegate'你需要利用 可選FUNC imagePickerController(_選擇器:的UIImagePickerController,didFinishPickingMediaWithInfo信息:[字符串:AnyObject]) 返回給你的信息的字典有一個鍵這應該是你的需要'UIImagePickerControllerMediaURL' – JMFR

+0

感謝JMFR,看起來不錯,但由於某些原因,信息沒有值。我敢肯定,這是我做錯了,但! – Harg

+0

我想你可能是對的,最好的辦法是保存本地副本。然後上傳。 (我猜這是因爲沙盒,我們不能在照片應用程序中獲取文件的URL,因爲它們有自己的數據目錄,與我們的應用程序數據分開) – JMFR

回答

2

最後我做了以下工作。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    if let imageURL = info[UIImagePickerControllerReferenceURL] 
    { 
     print(imageURL) 
     Alamofire.upload(.PUT, url + "/api/Image/" + id, file: imageURL).responseString { 
      _, _, result in 
      print("Success: \(result.isSuccess)") 
      print("Response String: \(result.value)") 
     } 
    } 

    dismissViewControllerAnimated(true, completion: nil) 
} 
相關問題