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 } |