【问题标题】:how to append String Array to form data如何附加字符串数组以形成数据
【发布时间】:2019-07-11 06:35:08
【问题描述】:

我想发送带有其他参数的文件。我可以使用 alamofire 上传来发送它。但问题是在我的参数中我有字符串数组。我不知道如何将它们附加到表单数据中。

let parameters = ["comments":comments!,
                      "title":title!,
                      "publish_date":publish_date,
                      "expiry_date":expiry_date,
                      "visibility[staff]":"N",
                       "visibility[students][Forms]":["1","2"]

        ]
        ]
        as [String : Any]
    let headers = [

        "Content-type": "multipart/form-data"
    ]

    let URL_head = try! URLRequest(url: STAFF_SERVICE_URL + "staff/2/news?api_key=\(api_key)", method: .post, headers: headers)


    Alamofire.upload(multipartFormData: { (multipartFormData) in


        if let url = fileUrl{
            multipartFormData.append(url, withName: "file")
        }
        for (key, value) in parameters {
   multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)

        }
        print(multipartFormData)
    }, with:URL_head)
    { (result) in
        switch result {
        case .success(let upload, _, _):


            upload.responseJSON { response in
                NSLog("Upload  response \(response)")
                if let jsonValue = response.result.value {
                    _ = JSON(jsonValue)
                    completion(true ,"Suucess")


                }else{
                    completion(false ,"Error")
                }

            }

        case .failure(let encodingError):
            print("fail \(encodingError)")
            NSLog("Error \(result)")
            completion(false ,"No Internet")
        }

    }
}

我尝试像这样单独编码数组,但没有成功。

 let data = try! JSONSerialization.data(withJSONObject: array, 
 options:.prettyPrinted)
 let jsonString = String(data: data, encoding: .utf8)!

【问题讨论】:

    标签: ios swift alamofire multipartform-data


    【解决方案1】:

    您可以直接传递不需要转换回字符串的数据对象

    例如

     for (key, value) in parameters {
            if checkIfItIsArray {
                // Make sure you handle error here
                let data = try! JSONSerialization.data(withJSONObject: array,  options:nil)
               multipartFormData.append(data, withName: key as String)
    
            } else {
              multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
              }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2021-06-22
      相关资源
      最近更新 更多