我试图通过 Alamofire 5 多部分数据上传单个图像,API 在 Postman 和 android 端都可以正常工作,但在 iOS 端不能正常工作。API 是在 Python 烧瓶中开发的。图像是从相机拍摄的,并使用 JPEGCompression 上传图像。
以下是我的代码:
func postMultipartData(imageData: Data, completion:@escaping (Result<AccuracyModel?, ErrorResponse>) -> Void) {
let url = APIConstant.ImageAccuracyBaseUrl.BASEURL
let mimeType = "image/jpeg"
let headers: HTTPHeaders = [
"Content-Type": ContentType.multipart.rawValue
]
AF.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(imageData, withName: "file", fileName: "file123.jpg", mimeType: mimeType)
print(multipartFormData.boundary)
}, to: url, usingThreshold: UInt64.init(),
method: .post,
headers: headers).response { response in
switch response.result {
case .success(_):
if response.response?.statusCode == 200 || response.response?.statusCode == 201 {
do {
if let data = response.data {
let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
print(json ?? "")
let decodedData = try! JSONDecoder().decode(AccuracyModel.self, from: data)
DispatchQueue.main.async {
completion(.success(decodedData))
}
} else {
print(response)
}
} catch {
completion(Result.failure(self.generateErroModel()!))
}
} else if response.response?.statusCode == 500 {
completion(Result.failure(self.generateErroModel()!))
} else {
fallthrough
}
break
case .failure(_):
completion(Result.failure(self.generateErroModel()!))
}
}
}
出于测试目的,api 正在使用 5000 端口,这可能是问题吗?不需要参数,所以不发送任何参数。
我也尝试过使用 NSURLSession,但没有运气。
对于 Flask 代码,我参考了以下链接: https ://pytorch.org/tutorials/intermediate/flask_rest_api_tutorial.html
提前致谢。