how to post array of images in multipart http post request

烂漫一生 提交于 2019-12-08 02:21:08

问题


I want to upload array of images, how should I append array to NSMutableData. here is my code

func createBodyWithParametersMulti(parameters: [String: String]?, filePathKey: String?, imageDataKey: [NSData?], boundary: String) -> NSData {
        let body = NSMutableData();

        if parameters != nil {
            for (key, value) in parameters! {
                body.appendString("--\(boundary)\r\n")
                body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                body.appendString("\(value)\r\n")
            }
        }

        if(imageDataKey.count != 0){
            let filename=filePathKey as! String
            // let mimetype = "image/jpeg"

            body.appendString("--\(boundary)\r\n")
            body.appendString("Content-Disposition: form-data; name=\"\(filename)\"; filename=\"image.jpg\"\r\n")
            // body.appendString("Content-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"\r\n")
            body.appendString("Content-Type: \("image.jpeg")\r\n\r\n")


            body.append(imageDataKey[0]! as Data)
               body.appendString("\r\n")
           }
        else {

        }
        body.appendString("--\(boundary)--\r\n")

        return body
    }

ImageDataKey is the name of the array containing multiple images as a NSData.


回答1:


Try This

func createBodyWithParametersAndImages(parameters: [String: Any]?, filePathKey: [String], imageDataKey: [Data], boundary: String) -> NSData {
    let body = NSMutableData();

    if parameters != nil {
        for (key, value) in parameters! {
            body.appendString(string: "--\(boundary)\r\n")
            body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
            body.appendString(string: "\(value)\r\n")
        }
    }

    for index in 0..<imageDataKey.count {
        let data = imageDataKey[index]

        let filename = "image.jpeg"
        let mimetype = "image/jpeg"

        body.appendString(string: "--\(boundary)\r\n")
        body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey[index])\"; filename=\"\(filename)\"\r\n")
        body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
        body.append(data)
        body.appendString(string: "\r\n")

    }


    body.appendString(string: "--\(boundary)--\r\n")

    return body
}

Method Calling

let body = createBodyWithParametersAndImages(parameters: parameter, filePathKey: ["profile_image", "cover_image"], imageDataKey: [imageData1, ImageData2] as! [NSData], boundary: boundary) as Data
request.httpBody = body


来源:https://stackoverflow.com/questions/49853961/how-to-post-array-of-images-in-multipart-http-post-request

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!