2015-05-08 83 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.