作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 AWS iOS SDK 将文件上传到 S3。我使用 AWSS3TransferUtility
因为我想允许后台上传。
后台任务正在运行 - 大文件可以在后台成功上传。问题是,当我将应用程序带回前台时,task.result.progress.fractionCompleted
值仍保持在后台运行之前的值。如果我在上传完成之前将应用程序放在前台,则进度值将保持该值直到上传完成,然后跳至 1.0。
当应用返回前台时,我在 TransferUtility 类上调用 enumerateToAssignBlocksForUploadTask:multiPartUploadBlocksAssigner:downloadBlocksAssigner:
,然后重新分配进度和完成处理程序。
有谁知道什么可能导致该值不更新?因此,我不知道如何恢复更新我的进度条。谢谢!
编辑:这是我开始上传过程的地方。我有一个围绕 AWS 任务的包装器,它保存进度和完成处理程序。
func upload(storagePath: String, sourceURL: URL, _ progressCompletion: @escaping ProgressCompletionCallback)-> UploadTask {
let expression = AWSS3TransferUtilityMultiPartUploadExpression()
expression.progressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
print("Progess: \(progress)")
progressCompletion(false, Float(progress.fractionCompleted), nil)
})
}
var completionHandler: AWSS3TransferUtilityMultiPartUploadCompletionHandlerBlock
completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
print("Completed!")
progressCompletion(true, Float(task.progress.fractionCompleted), error)
})
}
let awsTask = transferUtility.uploadUsingMultiPart(fileURL: sourceURL,
bucket: Constants.bucketName,
key: storagePath,
contentType: "text/plain",
expression: expression,
completionHandler: completionHandler)
return UploadTask(task: awsTask,
progressBlock: expression.progressBlock!,
completionBlock: completionHandler)
}
最佳答案
我在下载文件时遇到同样的问题。 Here是我在他们的 github 页面上打开的问题的链接,至少对于下载文件的情况是这样。它们不会从正在使用的 NSURLSession
类接收回调。您的情况可能与此类似。
关于ios - AWSS3TransferUtilityMultiPartUploadTask - 从后台返回的进度值未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217235/
我是一名优秀的程序员,十分优秀!