【发布时间】:2020-10-11 00:36:36
【问题描述】:
我正在使用 Alamofire 5,并且正在尝试将图像上传到 Rocket Chat 服务器。我需要使用 AF 复制的相应 curl 语句位于以下链接: (文档链接:https://docs.rocket.chat/api/rest-api/methods/rooms/upload)
我一直在尝试使用 multipartFormData 上传,但没有成功。我还尝试完全绕过 Alamofire 并使用 Swift URLSession。我能做的最好的就是从服务器获得相同的错误消息,即“errorType”:invalid-field。”
我现在的代码:
let url = URL_MESSAGES + "rooms.upload/\(_group._id ?? "")"
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"X-Auth-Token": authToken,
"X-User-Id": me._id ?? "",
"Content-type":"multipart/form-data; boundary=\(boundary)"
]
if let data = image.jpeg(.medium) {
print(data.count)
AF.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(data, withName: "image", fileName: "image.jpeg", mimeType: "image/jpeg")
},
to: url, method: .post , headers: header)
.response { resp in
print(resp)
}
.cURLDescription { description in
print(description)
}
.responseString { [weak self] (response) in
DispatchQueue.main.async {
if response.error == nil {
guard let data = response.data else {
return completion(true,[:])
}
if let json = try? JSON(data: data) {
let dictionaryIn = json.rawValue as! [String : Any]
if (self?.isSuccess(data: dictionaryIn))! {
completion(true,json.rawValue as! [String : Any])
}else{
completion(false,[:])
self?.handleError(data: dictionaryIn)
}
}
}else{
completion(false,[:])
self?.handleError(data: [:])
}
}
}
}
}
【问题讨论】:
标签: swift alamofire rocket.chat