【发布时间】:2019-06-29 16:27:05
【问题描述】:
我有一个项目,用户从他们的画廊或快照中选择图像,它应该被上传到远程服务器。
现在,如果我尝试使用放入 xcode 的静态图片上传,图片会上传,但当我使用 ImagePicker 并选择图片并将其传递给 ImageView 时,图片显示但无法上传到服务器。该应用程序不会崩溃,图像上传只是不去。有什么理由吗?任何帮助将不胜感激
NetworkAdapter.instance.uploadImage(status: "user", image: Img.image).subscribe(onNext: { check in
print("CHECKOUT NOW \(check)")
}, onError: { error in
print("CHECKOUT NOW \(error.localizedDescription)")
}).disposed(by: disposeBag)
我正在使用Moya 进行 API 调用
case .uploadImage(let data):
let imageData = data.image.jpegData(compressionQuality: 1.0)
let memberIdData = "\(data.status)".data(using: String.Encoding.utf8) ?? Data()
var formData: [Moya.MultipartFormData] = [Moya.MultipartFormData(provider: .data(imageData!), name: "image", fileName: "user.jpeg", mimeType: "image/jpeg")]
【问题讨论】:
-
您的上传请求可能会被过早处理。您是否将
disposeBag保留足够长的时间以完成请求? -
顺便说一句,这个获取质量为 1.0 的 jpeg 的过程意味着您发送到服务器的图像与用户设备中的资产不完全相同,而且还要大得多。一旦您解决了这个问题,您可能需要考虑是否更愿意上传原始资产,或者您是否真的想通过
UIImage和 JPEG 表示来往返它。这取决于您的业务需求。 -
@Rob 你有什么建议
-
确认问题是否是请求未成功发出,或者请求是否已发送,但格式错误,导致服务器无法接受。就像我说的那样,我使用像Charles 这样的工具作为我的“当橡胶撞到路上”的工具,准确地确认通过电线发送的内容。配置这些工具需要一点时间,但它们对于诊断这类网络问题非常宝贵。
标签: ios swift uiimagepickercontroller rx-swift moya