我想发送带有其他参数的文件。我能够使用 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)!
可以直接传递不需要转换回字符串的数据对象
例如
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)
}
}