Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.swift
- // MyImageUploadExample
- //
- // Created by user on 5/4/15.
- // Copyright (c) 2015 hhapit. All rights reserved.
- //
- import UIKit
- class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
- @IBOutlet weak var myImageView: UIImageView!
- @IBOutlet weak var myActivityIndicator: UIActivityIndicatorView!
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- @IBAction func uploadButtonTapped(sender: AnyObject) {
- myImageUploadRequest()
- }
- @IBAction func selectPhotoButton(sender: AnyObject) {
- var myPickerController = UIImagePickerController()
- myPickerController.delegate = self;
- myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
- self.presentViewController(myPickerController, animated: true, completion: nil)
- }
- func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
- {
- myImageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
- self.dismissViewControllerAnimated(true, completion: nil)
- }
- func myImageUploadRequest()
- {
- let myUrl = NSURL(string: "http://www.higoapps.com/api/upload/");
- let request = NSMutableURLRequest(URL:myUrl!);
- request.HTTPMethod = "POST";
- let param = [
- "firstName" : "Sergey",
- "lastName" : "Kargopolov",
- "userId" : "9"
- ]
- let boundary = generateBoundaryString()
- request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
- let imageData = UIImageJPEGRepresentation(myImageView.image, 1)
- if(imageData==nil) { return; }
- request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData, boundary: boundary)
- myActivityIndicator.startAnimating();
- let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
- data, response, error in
- if error != nil {
- println("error=\(error)")
- return
- }
- // You can print out response object
- println("******* response = \(response)")
- // Print out reponse body
- let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
- println("****** response data = \(responseString!)")
- dispatch_async(dispatch_get_main_queue(),{
- self.myActivityIndicator.stopAnimating()
- //self.myImageView.image = nil;
- });
- }
- task.resume()
- }
- func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
- var body = NSMutableData();
- if parameters != nil {
- for (key, value) in parameters! {
- body.appendString("–-\(boundary)\r\n")
- body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
- body.appendString("\(value)\r\n")
- }
- }
- let filename = "user-profile.jpg"
- let mimetype = "image/jpg"
- body.appendString("–-\(boundary)\r\n")
- body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
- body.appendString("Content-Type: \(mimetype)\r\n\r\n")
- body.appendData(imageDataKey)
- body.appendString("\r\n")
- body.appendString("–-\(boundary)–-\r\n")
- return body
- }
- func generateBoundaryString() -> String {
- return "Boundary-\(NSUUID().UUIDString)"
- }
- }
- extension NSMutableData {
- func appendString(string: String) {
- let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
- appendData(data!)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement