简体   繁体   中英

Uploading multiple images(with parameters) using multipart form data - Alamofire 5

I have been trying to upload multiple images(3) with parameters using alamofire but i cant seem to do it.(My lack of knowledge). Could someone kindly help me out with this? This is what i have tried

{
        let headers: HTTPHeaders = [
            xyz
        ]

    let param : [String: Any] = [
        "emp_Id" : "",
        "device_Identifier" : "",
        "timestamp" : "",
        "description" : "",
        "handoverStatus" : ""
    ]
    

            AF.upload(
                multipartFormData: { multipartFormData in
                    multipartFormData.append(imgData0, withName: "media1" , fileName: "file0.jpeg", mimeType: "image/jpeg")
                    multipartFormData.append(imgData1, withName: "media2",fileName: "file1.jpg", mimeType: "image/jpg")
                    multipartFormData.append(imgData2, withName: "media3",fileName: "file1.jpg", mimeType: "image/jpg")
                    // I think im supposed to add the last part here but i dunno how to do that
            },
                to: "http://ip.here.--.--/new.php", method: .post , headers: headers)
                .response { resp in
                    print(resp)

            }
    }

This is what the server expects

[{"key":"media1","description":"","type":"file","value":["/C:/Users/x/x/Saved Pictures/x.jpg"]},
[{"key":"media2","description":"","type":"file","value":["/C:/Users/x/x/Saved Pictures/x.jpg"]},
[{"key":"media3","description":"","type":"file","value":["/C:/Users/x/x/x.jpg"]},

{"key":"model","value":"{\"emp_Id\": \"6\",\"device_Identifier\":\"Device 01\",\"timestamp\":\"\123\,
”\description\”:\”description\",”handoverStatus”:”false”}","type":"text"}]

I dunno how to add the last part to the multipart form data, could some point me in the right direction ?

Thanks

Try this method to upload multiple images

class func uploadImageWithURL(endPath : String, dictImage : [String:[UIImage]], parameter : [String : Any], header : HTTPHeaders? = nil, success : @escaping ( Any? )->Void, failure : @escaping (Error) -> Void){
    
    let baseUrl = "your base URL"
    let fullUrl = baseUrl + endPath
    var headers = ["Content-type" : "multipart/form-data"]
    if let header = header{
        headers = header
    }
    
    let url = (try? URLRequest(url: fullUrl, method: .post, headers: headers))!
    upload(multipartFormData: { (multipartData) in
        
        for imagesData in dictImage {
            
            for arrimage in imagesData.value{
                
                multipartData.append(arrimage.jpegData(compressionQuality: 0.50)!, withName: imagesData.key, fileName: "\(Date().timeIntervalSince1970).jpg", mimeType: "image/jpeg")
            }
            
        }
        for (key, value) in parameter {
            multipartData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }
        
    }, with: url) { (resultData) in
        
        switch resultData{
        case .success(let upload, let streamingFromDisk, let fileURL):
            
            print("File URL : \(String(describing: fileURL))")
            print("Streaming From Disk : \(streamingFromDisk)")
            
            upload.uploadProgress(closure: { (progress) in
                print("Progress : \(progress.fractionCompleted)")
            })
            upload.responseJSON(queue: nil, options: .allowFragments, completionHandler: { (response) in
                if let value = response.result.value
                {
                    success(value)
                }
            })
        case .failure(let error):
            failure(error)
            print(error)
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM