2015-09-21 127 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) 
} 
相关问题