有什么方法可以在alamofire中发布带有进度的JSON吗?我需要做些什么,我需要在请求JSON时同时具有base64图像字符串和一些其他参数的JSON,所以我需要向最终用户显示Progress,所以任何人都知道如何在Alamofire中进行操作?
我遵循了以下链接,但是它给我Alamofire中的语法错误吗?
Alamofire POST request with progress
let parameters: [String: AnyObject] = ["key": "value" as AnyObject]
let mutableURLRequest = NSMutableURLRequest(url: URL(string: "url goes here")!)
mutableURLRequest.httpMethod = "POST"
let encodedURLRequest = try! Alamofire.URLEncoding.default.encode(mutableURLRequest as! URLRequestConvertible, with: parameters)
let data = encodedURLRequest.httpBody!
Alamofire.upload(mutableURLRequest, data)
.progress { _, totalBytesRead, totalBytesExpectedToRead in
print("ENTER .PROGRESSS")
print("\(totalBytesRead) of \(totalBytesExpectedToRead)")
}
.responseJSON { _, _, mydata, _ in
print(mydata)
}
它给我下面的错误
无法使用类型为((NSMutableURLRequet,Data))的参数列表调用'upload'
答案 0 :(得分:0)
如您所指出的,您可以使用Alamofire上载文件或图像,而无需将其转换为Base64,使用MultipartFormData并跟踪进度。 如果出现语法错误,您可以向我们详细说明或返回文档。
答案 1 :(得分:0)
如果要显示进度状态,则可以使用以下代码:
let binaryImageData = base64EncodeImage(image)
SVProgressHUD.show() //use any progress hud
let parameters : [String:Any] = [
"Name" : "UserProfilePhoto",
"Body": binaryImageData,
"parentId": userId
]
let header = ["content-type" : "application/json", "Authorization": "your token here"]
var imageURL: URL {
return URL(string: "Your UrlString here")
}
Alamofire.request(imageURL, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: header).responseJSON {
response in
if (response.result.isSuccess){
SVProgressHUD.dismiss()
let result = response.result.value as? NSDictionary
}
else{
SVProgressHUD.dismiss()
}
}
}