swift3 - Alamofire.upload 操作在库外部失败
问题描述
我很想上传用户通过图库或拍照选择的图像,但我收到了 SSL_ERROR_SYSCALL(5)。
完全错误:boringssl_session_errorlog(236) [C1.1:2][0x105a04e20] [boringssl_session_write] SSL_ERROR_SYSCALL(5): 库外部操作失败
我尝试了许多带参数和不带参数的不同方法。我知道上传脚本正在工作,因为我可以使用 Postman 向端点发送请求并且文件正确上传。
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data"
]
let imageData = UIImagePNGRepresentation(imgPostHero.image!)
Alamofire.upload(multipartFormData:{ multipartFormData in
multipartFormData.append(imageData!, withName: "image", fileName: "uploaded_image.png", mimeType: "image/png")},
usingThreshold: UInt64.init(),
to: "https://url_to_upload_script",
method: .post,
headers: headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
print(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
解决方案
这可能是因为您通过 TLS (https) 进行连接,并且您要连接的服务器具有不受信任或无效的 SSL 公共证书。原因可能是它已过期、发给错误的 url 或自签名。
最佳实践是实施适当的 ServerTrustPolicy。在开发阶段,信任任何 url 可能就足够了,但在生产阶段,SSL 验证是必须的。
查看链接:Alamofire with a self-signed certificate / ServerTrustPolicy
推荐阅读
- java - 返回数组列表的连接元素的字符串的方法
- python - 在输出中检索空列表而不是值
- python - 无法创建循环以自定义方式打印项目
- r - R中的“=”和“<-”有什么区别?
- javascript - 我如何知道 GPU 可以并行执行多少个矩阵运算?
- php - Woocommerce:禁用预约取消 URL 地址的登录要求 [wp nonce]
- tkinter - 工作 tk 画布(带有图像的绘图应用程序)从画布中删除对象
- c# - 弹出要求在 Xamarin 应用程序中保存“登录信息”的原因是什么?
- javascript - TypeError:mention.send 不是函数 - discord.js
- git - 使用 Git 部署到 Heroku 时,如何解决子树上的“pushed branch tip is behind”?