【问题标题】:How to cancel AWSTask<AWSS3TransferUtilityUploadTask *> request?如何取消 AWSTask<AWSS3TransferUtilityUploadTask *> 请求?
【发布时间】:2019-06-07 12:57:50
【问题描述】:

我正在 AWSS3 服务器中上传类似图像的文件,但我无法取消请求。

我尝试在上传任务开始后取消请求。我正在使用task.result.cancel()方法取消任务。

let awsTransferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: AWSConfiguration.callbackKey)

        let task = awsTransferUtility!.uploadFile(url,
                                                  bucket: bucket,
                                                  key: key,
                                                  contentType: file.type.contentType,
                                                  expression: expression,
                                                  completionHandler: completionHandler)
            .continueWith(block: { (task) -> Any? in
                if task.error != nil {
                    completion(nil, task.error)
                }
                return nil
            }) as! AWSTask<AWSS3TransferUtilityUploadTask>

我只想取消请求,文件不会上传到服务器。

【问题讨论】:

  • 谁能尽快给出解决方案?谢谢!!

标签: ios swift iphone awss3transfermanager


【解决方案1】:

根据docs,可以通过调用task.result获取AWSS3TransferUtilityUploadTask的实例。

返回 AWSTask 的一个实例。成功初始化后,task.result 包含 AWSS3TransferUtilityUploadTask 的实例。

那么您应该可以在AWSS3TransferUtilityUploadTask 实例上调用cancel

let task: AWSTask<AWSS3TransferUtilityUploadTask> = ...
let uploadTask: AWSS3TransferUtilityUploadTask = task.result
uploadTask.cancel()

【讨论】:

  • 更新了我的答案。请检查一下,看看是否有帮助。
  • 是的,我做了同样的事情,但仍然面临同样的问题。你可以检查我的 mac 吗?使用 teamviewer。?
  • 我们可以一起解决问题并制定解决方案。请加入此聊天:chat.stackoverflow.com/rooms/194599/…
  • 如果连接不存在,并且 .uploadFile(... YES; cancelled = NO; faulted = YES; result = (null)>)。任务已完成,但完成块永远不会被调用。因此,结果为 null(无法取消)并且永远不会调用完成使其无法处理.. ..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多