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
}
Create Multifile Uploader in PHP and Swift using Task
Published in the Ahmad Naser ecosystem. Estimated reading time: 2 minutes.
Leave a Reply