swift - 如何取消 Alamofire.upload

标签 swift alamofire

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

但是能取消上传这种耗时的请求是很合理的。 Alamofire 对此有哪些选择?

最佳答案

使用 Uploading MultiPartFormData来自 Alamofire 自述文件的示例:

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)
        }
    }
)

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

let request = upload.responseJSON {  ...

...

request.cancel()

关于swift - 如何取消 Alamofire.upload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888793/

相关文章:

ios - 如何在调用 SOAP 网络服务时显示事件指示器?

ios - 如何使用来自另一个 View Controller 的用户输入快速创建带有 TableView 单元格的列表

ios - 删除多余的单元格/行空格,而不会在 UITableView 上显示数据

ios - Alamofire:使用 url、方法、参数、 header 和编码编写 POST 请求的语法

ios - Xcode 项目中的 Alamofire RED - 没有 Alamofire.framework 文件

ios - Swift - 在 Xib 中动态设置 UITableView 高度

ios - 数据未在 View Controller Swift 之间传输

ios - 使用 AlamofireObjectMapper/ObjectMapper 从数组对象获取值(swift - iOS)

ios - 动态地将嵌套参数添加到 Alamofire 参数中

ios - 应用程序无法使用 3g 连接,但可以在 wifi 上正常工作