Я хочу загрузить изображения в Slack в моем приложении iOS. Пользователи могут загружать изображения из своего фото-приложения, а приложение загружать их в канал Slack.
Я пробовал следующее.
Alamofire 5.2
if let imageData = presenter.images[0].jpegData(compressionQuality: 0.1) {
AF.upload(multipartFormData: { multipartFormData in
multipartFormData.append("xoxb-MySlackToken".data(using: .utf8)!, withName: "token")
multipartFormData.append("MyChannel".data(using: .utf8)!, withName: "channels")
multipartFormData.append(imageData, withName: "file", fileName: "testFile.jpeg", mimeType: "image/jpeg")
}, to: "https://slack.com/api/files.upload", method: .post)
.response { response in
debugPrint(response)
}
}
Но Я получаю следующую ошибку:
[Request]: POST https://slack.com/api/files.upload
[Request Body]:
None
[Response]:
nil
[Response Body]:
None
[Data]: None
[Network Duration]: 0.17436504364013672s
[Serialization Duration]: 0.0s
[Result]: failure(Alamofire.AFError.sessionTaskFailed(error: Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={_NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <17C16CC4-8293-4717-84DB-64F040B757FD>.<1>, _kCFStreamErrorDomainKey=1, NSErrorPeerAddressKey=<CFData 0x600000d81950 [0x7fff8062d610]>{length = 16, capacity = 16, bytes = 0x100222b87f0000010000000000000000}, _kCFStreamErrorCodeKey=100, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalUploadTask <17C16CC4-8293-4717-84DB-64F040B757FD>.<1>"
)}))
Почему мой код вызывает эту ошибку? Я думаю, что ошибка моего случая imageData, но я не понял
Следующий curl дает тот успех, которого я хотел.
curl -x localhost:8888 -XPOST "https://slack.com/api/files.upload" \
-H "Content-Type: multipart/form-data" \
-F file=@sample_image.jpg \
-F token=MySlackToken \
-F channels=MyChannel \
Пожалуйста, помогите мне в этом вопросе.