更新的Alamofire 4.0.0没有提到如何放置Httpmethod&使用multipartFormData上传的Httpheaders。这就是我google并在stackoverflow问题中找到解决方案的原因。但问题是我做了同样的回答然后得到以下错误消息和构建失败。请帮我解决一下。
如果没有更多的上下文,表达的类型是不明确的
这是我的编码:
let URL = try! URLRequest(url: Config.imageUploadURL, method: .post, headers: headers)
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(self.imageData, withName: "image", fileName: "file.png", mimeType: "image/png")
},
to: URL,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if((response.result.value) != nil) {
} else {
}
}
case .failure( _):
}
}
)
答案 0 :(得分:16)
Alamofire.upload(multipartFormData:to:encodingCompletion:)
对URLConvertible
参数采用to:
。相反,您应该使用Alamofire.upload(multipartFormData:with:encodingCompletion:)
,其URLRequestConvertible
参数为with:
。
我认为URL
的参数名称与类型URL()
相同,有助于创建奇怪的编译器错误。
以下编译:
let url = try! URLRequest(url: URL(string:"www.google.com")!, method: .post, headers: nil)
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(Data(), withName: "image", fileName: "file.png", mimeType: "image/png")
},
with: url,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if((response.result.value) != nil) {
} else {
}
}
case .failure( _):
break
}
}
)
答案 1 :(得分:0)
对我来说,构建错误是由multipartFormData.appendBodyData()
引起的。用multipartFormData.append()
替换后,问题就解决了。
答案 2 :(得分:0)
我得到了同样的错误,花了很多时间后,我发现问题是:
我正在传递MutableURLRequest
而不是传递URLRequest
个对象。这就是为什么我得到这个错误。在将其输入URLRequest
后,它就会开始工作。