네트워크 호출을 통해 이미지를 백엔드 서버에 업로드하고 있습니다. 지금 나는 코드 작성에 다음을 사용하고있다. 이 코드는 인터넷이 온라인 상태 인 상황에서 완벽하게 작동합니다.멀티 파트 업로드가 alamofire 이미지로 성공했는지 확인하는 방법
// MARK: - PUT
static func PUT(URL: String,
data: Data,
mimeType: String,
headers: [String: String]?) -> Promise<Void>
{
return Promise { fulfill, reject in
let URL = try! URLRequest(url: URL, method: .put, headers: headers)
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(InputStream.init(data: data), withLength: UInt64(data.count), name: "image", fileName: "file.png", mimeType: mimeType)
},
with: URL,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if response.result.value == nil {
fulfill()
}else {
reject(response.result.error!)
}
}
case .failure(_):
break
}
})
}
}
}
경우에 따라 오프라인 모드로 전환했습니다. 그것은 여전히 함수를 실행하고 여전히 약속을 fullfills()합니다. 심지어 네트워크가 오프라인 상태입니다. 나는 이것이 encodingResult가 성공적인지 아닌지를 검사하기 때문에 이것이라고 생각한다. 네트워크 호출 자체에 대해서는 NOt입니다.
네트워크 통화가 성공했는지 여부를 어떻게 확인할 수 있습니까? 공허로 돌아갑니다.
최고, 케빈.
가져 오기 노트 : 우리는 이미지를 업로드 한 것을 의미한다 (200) 코드를받은 경우
- 서버가 빈 채로을 반환합니다. 당신이 성공 또는 실패를 결정하는 상태 코드를 사용하려고하는 경우
내가 이것을 이해하지 않습니다. 첫째, 당신은'.failure'의 경우에 이행하거나 거절하지 않습니다. 나는 당신이'거부 할 것'이라고 생각했을 것이다. 둘째로, 응답이'.success' 였지만'value'가 없다면 당신은 약속을 이행하고 있습니다. 그러나 당신이'value'를 얻었다면 당신은 거부하고 있습니다. 그것은 거꾸로 보인다. – Rob
우리는 200 개의 코드가 있다면 서버는 "nil"을 반환합니다. 그것이 설치 방법입니다. 당신은 .failure에 거부를 추가 할 필요가 있지만 그것이 상황을 바꾸지는 않는다는 것은 맞습니다. –
기존 코드를 어떻게 변경 하시겠습니까? :) 팁 btw 주셔서 감사합니다 –