Alamofire:取消(暂停)文件上传

Posted

技术标签:

【中文标题】Alamofire:取消(暂停)文件上传【英文标题】:Alamofire: Cancel (suspend) file upload 【发布时间】:2016-10-05 20:01:00 【问题描述】:

我正在使用 Alamofire 上传文件:

    Alamofire.Manager.upload(
        APIManager.Router.UploadFileRoute,
        multipartFormData :  multipartFormData in
            multipartFormData.appendBodyPart(data: audioData, name: "file", fileName: "file.m4a", mimeType: "audio/m4a")
        , encodingCompletion:  result in
            switch result 
            case .Success(let request, _, _):
              break
            case .Failure(let encodingError):
              break
            
    )

文件上传开始后如何取消(暂停)?

documentation 建议我在 Request 对象上调用 suspend(),但我如何使用上面的文件上传 API 获取 Alamofire.Request 对象?此 API 不返回任何 Alamofire.Request 对象。

【问题讨论】:

【参考方案1】:

原来请求只有在编码后才准备好(见内联 cmets)

Alamofire.Manager.upload(
    APIManager.Router.UploadFileRoute,
    multipartFormData :  multipartFormData in
        multipartFormData.appendBodyPart(data: audioData, name: "file", fileName: "file.m4a", mimeType: "audio/m4a")
    , encodingCompletion:  result in
        switch result 
        case .Success(let request, _, _):
          // Reference the request here (will get here immediately)
             request.responseJSON  response in
                  // This closure executes only after request succeeds or fails
             
          break
        case .Failure(let encodingError):
          break
        
)

【讨论】:

以上是关于Alamofire:取消(暂停)文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 从多个请求中取消一个请求

使用 Alamofire 上传文本文件

Alamofire 上传失败,文件超过 1MB

Swift - Alamofire - 从照片库上传文件

如何使用 alamofire 上传多个文件并显示进度?

GoogleDrive + Alamofire:上传带有属性的文件