如何取消Alamofire.upload

use*_*411 10 swift alamofire

我通过Alamofire.upload多部分数据在服务器上上传图像.不像Alamofire.request它不返回Request对象,我通常用它来取消请求.

但是能够取消像上传这样的消费请求是非常合理的.Alamofire有哪些选择?

Pau*_*ung 14

使用Alamofire README中的Uploading MultiPartFormData示例:

Alamofire.upload(
    .POST,
    "https://httpbin.org/post",
    multipartFormData: { multipartFormData in
        multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn")
        multipartFormData.appendBodyPart(fileURL: rainbowImageURL, name: "rainbow")
    },
    encodingCompletion: { encodingResult in
        switch encodingResult {
        case .Success(let upload, _, _):
            upload.responseJSON { response in
                debugPrint(response)
            }
        case .Failure(let encodingError):
            print(encodingError)
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

在这里,upload.responseJSON返回a Request,这应该允许您将其分配给某些东西以便稍后取消.例如:

let request = upload.responseJSON {  ...

...

request.cancel()
Run Code Online (Sandbox Code Playgroud)