【问题标题】:how to post array of images in multipart http post request如何在多部分 http 发布请求中发布图像数组
【发布时间】:2018-04-16 09:31:37
【问题描述】:

我想上传图片数组,我应该如何将array 附加到NSMutableData。这是我的代码

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
    }

ImageDataKeyarray 的名称,其中包含多个图像作为NSData

【问题讨论】:

  • 使用for循环并一张一张地追加图片...

标签: ios swift nsurl


【解决方案1】:

试试这个

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
}

方法调用

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

【讨论】:

  • 成功应该像这样显示 "Image": [ "1523612490901-photo-1507804032213", "1523612490903-photo-1507803950846" ],
  • @Abathla 不明白。你能解释一下吗?
  • 当我们必须发送多个图像但所有图像的参数都不同时,我们通常会运行此函数,例如 image,image1... 等等。但我有一个我想要的 imageData 数组发布一个名为“image”的参数,成功后,图像应该以这样的数组显示在服务器上:[“1523612490901-photo-1507804032213”,“1523612490903-photo-1507803950846”]
  • @Abathla 尝试设置 filePathKey: ["image", "image"]。在数组中传递相同的键。
  • @Abathla 欢迎✌️
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2016-05-22
  • 2013-12-22
  • 2017-05-11
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多