Advertisement
Guest User

viewController.swift

a guest
May 8th, 2015
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. //  ViewController.swift
  3. //  MyImageUploadExample
  4. //
  5. //  Created by user on 5/4/15.
  6. //  Copyright (c) 2015 hhapit. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10.  
  11. class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  12.  
  13.     @IBOutlet weak var myImageView: UIImageView!
  14.    
  15.     @IBOutlet weak var myActivityIndicator: UIActivityIndicatorView!
  16.    
  17.     override func viewDidLoad() {
  18.         super.viewDidLoad()
  19.         // Do any additional setup after loading the view, typically from a nib.
  20.     }
  21.  
  22.     override func didReceiveMemoryWarning() {
  23.         super.didReceiveMemoryWarning()
  24.         // Dispose of any resources that can be recreated.
  25.     }
  26.  
  27.  
  28.     @IBAction func uploadButtonTapped(sender: AnyObject) {
  29.        
  30.         myImageUploadRequest()
  31.        
  32.        
  33.     }
  34.    
  35.     @IBAction func selectPhotoButton(sender: AnyObject) {
  36.        
  37.         var myPickerController = UIImagePickerController()
  38.         myPickerController.delegate = self;
  39.         myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
  40.        
  41.         self.presentViewController(myPickerController, animated: true, completion: nil)
  42.        
  43.     }
  44.    
  45.     func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
  46.        
  47.     {
  48.         myImageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
  49.        
  50.         self.dismissViewControllerAnimated(true, completion: nil)
  51.        
  52.     }
  53.    
  54.     func myImageUploadRequest()
  55.     {
  56.        
  57.         let myUrl = NSURL(string: "http://www.higoapps.com/api/upload/");
  58.         let request = NSMutableURLRequest(URL:myUrl!);
  59.         request.HTTPMethod = "POST";
  60.        
  61.         let param = [
  62.             "firstName" : "Sergey",
  63.             "lastName" : "Kargopolov",
  64.             "userId" : "9"
  65.         ]
  66.        
  67.         let boundary = generateBoundaryString()
  68.        
  69.         request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
  70.         let imageData = UIImageJPEGRepresentation(myImageView.image, 1)
  71.        
  72.         if(imageData==nil) { return; }
  73.        
  74.         request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData, boundary: boundary)
  75.        
  76.         myActivityIndicator.startAnimating();
  77.        
  78.         let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
  79.             data, response, error in
  80.            
  81.             if error != nil {
  82.                 println("error=\(error)")
  83.                 return
  84.             }
  85.            
  86.             // You can print out response object
  87.             println("******* response = \(response)")
  88.            
  89.             // Print out reponse body
  90.             let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
  91.             println("****** response data = \(responseString!)")
  92.            
  93.             dispatch_async(dispatch_get_main_queue(),{
  94.                 self.myActivityIndicator.stopAnimating()
  95.                 //self.myImageView.image = nil;
  96.             });
  97.            
  98.         }
  99.        
  100.         task.resume()
  101.        
  102.     }
  103.    
  104.     func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
  105.        
  106.         var body = NSMutableData();
  107.        
  108.         if parameters != nil {
  109.             for (key, value) in parameters! {
  110.                 body.appendString("–-\(boundary)\r\n")
  111.                 body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
  112.                 body.appendString("\(value)\r\n")
  113.             }
  114.         }
  115.        
  116.         let filename = "user-profile.jpg"
  117.        
  118.         let mimetype = "image/jpg"
  119.        
  120.         body.appendString("–-\(boundary)\r\n")
  121.         body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
  122.         body.appendString("Content-Type: \(mimetype)\r\n\r\n")
  123.         body.appendData(imageDataKey)
  124.         body.appendString("\r\n")
  125.        
  126.         body.appendString("–-\(boundary)–-\r\n")
  127.        
  128.         return body
  129.     }
  130.    
  131.     func generateBoundaryString() -> String {
  132.         return "Boundary-\(NSUUID().UUIDString)"
  133.     }
  134.    
  135. }
  136.  
  137.     extension NSMutableData {
  138.        
  139.     func appendString(string: String) {
  140.         let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
  141.         appendData(data!)
  142.     }
  143.    
  144.    
  145.  
  146.  
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement