Courses • Unity Assets • PlayStore • Hosting • Channel • بالعربي

Ahmad Naser Navigation
  • Home
    • Apps
    • Arabic Website
    • Our Academy
    • Udemy Courses
    • Certification
    • Youtube
    • Code Snippets
  • About
    • About Us
    • Services
    • Apps
    • Clients
    • Projects
    • Professional Training
  • Courses
  • My Account
  • Shop
    • Go Shopping
    • Online Coaching
    • One-To-One Training Pricing
    • Hosting
    • Cart
    • Checkout
  • Blog
  • Contact
  • 0 Items$0.00
  • Home
    • Apps
    • Arabic Website
    • Our Academy
    • Udemy Courses
    • Certification
    • Youtube
    • Code Snippets
  • About
    • About Us
    • Services
    • Apps
    • Clients
    • Projects
    • Professional Training
  • Courses
  • My Account
  • Shop
    • Go Shopping
    • Online Coaching
    • One-To-One Training Pricing
    • Hosting
    • Cart
    • Checkout
  • Blog
  • Contact
  • 0 Items$0.00
Home Gist Create Multifile Uploader in PHP and Swift using Task
back to snippest | Comment | Share

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
    func generateBoundaryString() -> String {
        return "Boundary-\(NSUUID().uuidString)"
    }
    
 
    
    //  Mark Upload Multipe Images
    func UploadMultipleImages(images: [UIImage]){
        
        print("Service: ", images)
        for image in images {
            let pngImage = image
            imagesData.append(pngImage.pngData()!)
            print(imagesData)
            
        }
        let url = URL(string:"https://example.com/api/v1/multifileupload")
        var uploadMultipleImage = URLRequest(url:url!)
        let boundary = generateBoundaryString()
        uploadMultipleImage.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
        uploadMultipleImage.httpMethod = "POST"
        uploadMultipleImage.setValue("Basic cmVzdGF1cmFudEFETUlOOnJlc3RhdXJhbnRQQFNTV09SRA==", forHTTPHeaderField: "Authorization")
        uploadMultipleImage.addValue("dalkjdsadsasdjljds==", forHTTPHeaderField: "ApiKey")
        
        
        let body = createBody(parameters: ["name":"ahmad","file[]":images], boundary: boundary) as Data
        
        let uploadMultipleImageTask = URLSession.shared.uploadTask(with: uploadMultipleImage as URLRequest, from : body){
            data, response, error in
            
            
            do {
                
                let jsonResult = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:Any]
                
                //status, count, msg, result
                /*
                 {
                 "status": "failed",
                 "count": 0,
                 "result": [
                 "no valid files"
                 ],
                 "msg": "no valid files"
                 }
                 */
                let status = jsonResult["status"] as? String //"failed"
                let count = jsonResult["count"] as? Int
                let msg = jsonResult["msg"] as? String
                let result = jsonResult["result"] as? NSDictionary
                
                //  Notify to presenter
              //  self.editorViewPresenterInterface?.uploadMultipleImageSuccessMessage(message: jsonData!)
                //print(jsonData!)
                
            } catch {
                
                print("JSON Processing Failed")
                
            }
            
        }
        uploadMultipleImageTask.resume()
    }
    
    
    func createBody(parameters: NSMutableDictionary?,boundary: String) -> NSData {
        let body = NSMutableData()
        
        if parameters != nil {
            for (key, value) in parameters! {
                
                if(value is String || value is NSString){
                    body.append("--\(boundary)\r\n".data(using: .utf8)!)
                    body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!)
                    body.append("\(value)\r\n".data(using: .utf8)!)
                }
                    
                else if(value is [UIImage]){
                    var i = 0;
                    for image in value as! [UIImage]{
                        let filename = "image\(i).jpg"
                        let data = image.pngData();
                        
                        let mimetype = "image/png"
                        
                        body.append("--\(boundary)\r\n".data(using: .utf8)!)
                        body.append("Content-Disposition: form-data; name=\"\(key)\"; filename=\"\(filename)\"\r\n".data(using: .utf8)!)
                        body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: .utf8)!)
                        body.append(data!)
                        body.append("\r\n".data(using: .utf8)!)
                        i = i + 1;
                    }
                    
                    
                }
            }
        }
        body.append("--\(boundary)--\r\n".data(using: .utf8)!)
        return body
    }