Swift-“一个;Alamofire.upload“文件-&燃气轮机&引用;AF.upload";上传功能出现问题
我从旧版本升级了pod Alamofire 5.0 从迁移指南 “MultipartFormData的API已更改,创建和上载MultipartFormData的顶级上载方法已更新,以匹配其他请求API,因此不再需要处理多部分编码的结果。” 我已经编写了下面的函数,我无法在新版本中重新编写,有人能在这方面帮助我吗 注: 我想我需要更改“Alamofire.upload”->“AF.upload”,但这还不足以解决问题,Swift-“一个;Alamofire.upload“文件-&燃气轮机&引用;AF.upload";上传功能出现问题,swift,alamofire,Swift,Alamofire,我从旧版本升级了pod Alamofire 5.0 从迁移指南 “MultipartFormData的API已更改,创建和上载MultipartFormData的顶级上载方法已更新,以匹配其他请求API,因此不再需要处理多部分编码的结果。” 我已经编写了下面的函数,我无法在新版本中重新编写,有人能在这方面帮助我吗 注: 我想我需要更改“Alamofire.upload”->“AF.upload”,但这还不足以解决问题, func uploadPhoto(token:String, userID
func uploadPhoto(token:String, userID: String, data: Data, dataUrl: URL) -> Observable<AnyObject?> {
return Observable<AnyObject?>.create({ (observer) -> Disposable in
print(userID);
print(data);
do {
let urlRequest = try URLRequest(url: ResourcePath.Upload.path + "/\(userID)" , method: .post)
Alamofire.upload(multipartFormData: { (multipartData) in
multipartData.append(data, withName: "Filedata", fileName: dataUrl.absoluteURL.lastPathComponent, mimeType: "image/jpeg")
//append(dataUrl, withName: "Filedata", fileName: dataUrl.absoluteString, mimeType: "image/png")
}, with: urlRequest, encodingCompletion: { (result) in
switch result {
case .success(let value, let t1, let t2) :
print(value)
value.responseData(completionHandler: { (dataResponse) in
switch (dataResponse.result) {
case .success(let value) :
print(value)
do {
let jsonData = JSON(dictData)
print("Upload photo response: \(jsonData)")
observer.onNext(jsonData as AnyObject?)
observer.onCompleted()
}
catch {
print(error)
observer.onError(error)
return
}
break
case .failure(let error) :
print(error)
observer.onError(error)
break
}
})
break
case .failure(let error) :
print(error)
observer.onError(error)
break
default:
break
}
})
} catch {
print(error)
observer.onError(error)
}
return Disposables.create {
print("disposed")
}
})
}
func上传照片(令牌:字符串,用户ID:字符串,数据:数据,数据URL:URL)->可观察{
返回可观察的。在中创建({(观察者)->一次性
打印(用户标识);
打印(数据);
做{
让urlRequest=尝试urlRequest(url:ResourcePath.Upload.path+“/\(userID)”,方法:.post)
上传(multipartFormData:{(multipartData)在
multipartData.append(数据,名称:“Filedata”,文件名:dataUrl.absoluteURL.lastPathComponent,mimeType:“image/jpeg”)
//追加(dataUrl,名称为:“Filedata”,文件名为:dataUrl.absoluteString,mimeType:“image/png”)
},带有:urlRequest,在中编码完成:{(结果)
切换结果{
成功案例(let值,let t1,let t2):
打印(值)
value.responseData(completionHandler:{(dataResponse)在
开关(dataResponse.result){
成功案例(let value):
打印(值)
做{
让jsonData=JSON(dictData)
打印(“上传照片响应:\(jsonData)”)
onNext(jsonData作为任何对象?)
observer.onCompleted()
}
抓住{
打印(错误)
observer.onError(错误)
返回
}
打破
案例。失败(let错误):
打印(错误)
observer.onError(错误)
打破
}
})
打破
案例。失败(let错误):
打印(错误)
observer.onError(错误)
打破
违约:
打破
}
})
}抓住{
打印(错误)
observer.onError(错误)
}
归还一次性物品。创建{
打印(“已处置”)
}
})
}
Alamofire 5在使用多部分表单编码时不再需要编码完成
闭包。相反,您可以使用在其他用例中看到的正常响应处理。例如:
AF.upload(multipartFormData:{data in
//构建您的多部分表单。
}).responseDecodable(属于:SomeType.self){response in
//处理响应。
}
您希望有人重写您的代码而不亲自尝试吗?我认为这不是一个好主意。你试过AF.upload而不是Alamofire.upload吗?我不知道如何进行更改AF.upload不工作我收到一个错误“表达式类型‘UploadRequest’在没有更多上下文的情况下是不明确的”