[英]Getting error while uploading multiple images with multipart form data in Alamofire
我搜索了許多問題並應用了解決方案,但是我的邏輯無法正常工作。 這是API調用中預期的結果:
我要發送的電話是:
let parameters = [
"address": self.addressField.text ?? "",
"pharmacy_id": "\(pharmaID ?? 0)",
"is_default": "\(isDefault ?? 0)",
"cash_payment": "\(1)",
"is_home_delivery": "\(isDelivery ?? 0)"
] as [String : Any]
Alamofire.upload(multipartFormData:{ multipartFormData in
for key in parameters.keys {
let name = String(key)
if let val = parameters[name] as? String{
multipartFormData.append(val.data(using: .utf8)!, withName: name)
}
}
DispatchQueue.main.async {
for (image) in self.presImagesArray {
if let imageData = UIImageJPEGRepresentation(image, 0.5) {
multipartFormData.append(imageData, withName: "prescription[]", fileName: "image.jpeg", mimeType: "image/jpeg")
}
}
// for (image) in self.presImagesArray {
// multipartFormData.append(UIImageJPEGRepresentation(image, 0.1)!, withName: "prescription", fileName: "image.jpg", mimeType: "image/jpg")
// }
}
},
usingThreshold:UInt64.init(),
to:url,
method:.post,
headers:headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
// if let result = response.result.value as? [String: AnyObject] {
// print(result["message"])
// }
print(response)
self.clearAllNotice()
self.successNotice("Success")
}
case .failure(let encodingError):
print(encodingError, encodingError.localizedDescription)
self.clearAllNotice()
self.errorNotice(encodingError.localizedDescription)
}
})
} else {
self.noticeInfo("Login Needed")
}
}
我遇到的問題是該呼叫返回並顯示一條消息,提示The prescription field is required.
這意味着按prescription[]
上傳圖片prescription[]
不能正常工作,而后端人員則說問題出在我的末端。
從代碼中可以看到,我添加了一個for
循環,並且在其中轉換並發送了圖像數據,關鍵是prescription[]
但仍然得到了這個響應。
您的問題是您正在調用DispatchQueue.main.async
來創建圖像。 退出此方法后,此閉包的調用方將繼續,因此,由於要異步添加圖像,因此在添加圖像之前已經發送了參數。
如果確實需要調用其他隊列,則需要使用DispatchQueue.main.sync
來阻止關閉,直到分派完成為止。 但是,您不需要這樣做,也不建議您在主/ UI線程上執行UIImageJPEGRepresentation
,因為這是一項繁重的功能,並且會阻塞UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.