2015-05-08 80 views
1

在我的应用程序中,用户可以从图库中选择要上传的照片。用户选择照片后,下面的代码被调用:挑选图像并上传

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { 
    self.dismissViewControllerAnimated(true, completion: {() -> Void in 

    }) 

} 

我需要将图片上传这个方法,但我不知道如何上传照片到我的服务器。我可以张贴文字与下面的代码,但我不知道怎么用这个照片/ S:

let request = NSMutableURLRequest(URL: NSURL(string: "url")!) 
request.HTTPMethod = "POST" 
let postString = "username=\(self.username)" 
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
      data, response, error in 
} 
task.resume() 

如何上传选定的照片我用上面的代码服务器?

回答

0

你在找什么叫Base64编码,
这可以这样调用,并添加到您的POST请求。

let base64String = imageData.base64EncodedStringWithOptions(.allZeros) 
println(base64String) 

较大的答案可以是found here

祝你好运!

0

如果你指定HTTPBody,你可以使用这样的东西。我在Objective-C中写这个。

NSMutableData *postData = [NSMutableData data]; 
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];  
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"fileupload\"; filename=\"%@\"\r\n", file]dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[NSData dataWithData:photo]]; 
[request setHTTPBody:postData]; 

对不起,我的编码,因为我没有做过Swift,我希望你可以翻译它。通过这样做,您可以上传图片,但这不是在iOS中处理服务器请求响应的正确方法。你应该使用AFNetworking来处理这些。 Look at this for more info.