在对Alamofire上传请求调用.resume()之后,请求是成功的,在.uploadProgress闭包中,我看到数据在1-2秒内被传输。但是在触发.responseJSON闭包之前,需要几秒钟(4-8秒)。
因此,整个过程花费了超过4倍的时间比它应该,根据进度关闭。
我确实找到了一些关于同一主题的问题--但没有对如何防止这种长时间的拖延作出有益的解释-为什么这是-甚至更好-。
是什么导致了这种延迟以及如何防止它?
下面是一个产生延迟的例子。不再涉及线程/异步的内容。
func makeUploadRequest(url: URL, data: UploadData, onDidFinish: @escaping (DataRequest, AttachmentData?) -> Void) -> DataRequest {
let request = AF.upload(multipartFormData: { formData in
formData.append(data.doc, withName: "doc", fileName: data.filename, mimeType: data.mimeType)
formData.append(self.UUID().data(using: .utf8)!, withName: "vendor_id")
formData.append(data.entityId.data(using: .utf8)!, withName: "entity_id")
formData.append(data.entityType.data(using: .utf8)!, withName: "entity_type")
formData.append(data.filename.data(using: .utf8)!, withName: "file_name")
}, to: url, method: .post, headers: getHeader())
request.responseJSON { response in
print("response arrived")
onDidFinish(request, self.processResponse(response))
}
request.uploadProgress { progress in
print("Upload progress: \(progress.fractionCompleted)")
}
return request
}下面是一些不幸的不太有用的搜索结果:
发布于 2022-09-01 10:28:41
就像很多次一样--一个解决方案在提出要求后就出现了。我成功地获得了与我连接到的服务器的一个负责任的后端开发的会话。他确认延迟发生在服务器上,而不是客户端。
所以它与阿拉莫火无关。。
下面是这样的情况:当我发送包含图像的上传请求时,服务器将图像数据交给图像处理库,该库创建要保存的图像资源和缩略图资源,并将它们发送到另一个存储图像的服务器。只有在整个过程完成之后,api服务器才会放弃我的请求。
我怀疑这种图像处理和存储需要6-8秒的时间,但这是另一个主题。
堆栈溢出,我会删除这个问题,因为‘问题’与阿拉莫火无关,但似乎我不能。请让我知道,如果我应该以另一种方式处理这个问题。
https://stackoverflow.com/questions/73567313
复制相似问题