Я хочу скачать файл с amazon s3.Вот мой код
let expression = AWSS3TransferUtilityDownloadExpression()
expression.downloadProgress = {(task: AWSS3TransferUtilityTask, bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) in
self.progressLabel.text = "Downloaded \(ByteCountFormatter.string(fromByteCount: progress.completedUnitCount, countStyle: .file)) of \(ByteCountFormatter.string(fromByteCount: progress.totalUnitCount, countStyle: .file) ) "
self.progressUpload.setProgress(Float(progress.fractionCompleted), animated: true)
}
completionHandler = { (task, location, data, error) -> Void in
if ((error) != nil){
print("Failed with error")
print("Error: \(error!)")
}
else{
//Set your image
var downloadedImage = UIImage(data: data!)
}
}
let transferUtility = AWSS3TransferUtility.default()
transferUtility.downloadToURL(nil, bucket: S3BucketName, key: saveFileWithName, expression: expression, completionHander: completionHandler).continueWithBlock { (task) -> AnyObject! in
if let error = task.error {
print("Error: \(error.localizedDescription)")
}
if let exception = task.exception {
print("Exception: \(exception.description)")
}
if let _ = task.result {
print("Download Starting!")
}
return nil;
}
, но он выдает ошибку, что «Значение типа« AWSS3TransferUtilityDownloadExpression »не имеет члена« downloadProgress »».
Можно ли загрузить с помощью alamofire?Это мой код для загрузки простого файла с использованием alamofire.но простой файл URL загружается, но файл корзины Amazon S3 не загружается.Пожалуйста, помогите мне с этим.
let url = URL(string: "\(AppConstants.ImageServerURL)\(fileUrl)")
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = Utilities.getDocumentsDirectory().appendingPathComponent("\(StringConstants.DownloadFolderName)/\(saveFileWithName).\(fileUrl.fileExtension())")
print(documentsURL)
return (documentsURL, [.removePreviousFile])
}
self.progressUpload.setProgress(0, animated: true)
UIViewController.current().present(self.uploadAlertView, animated: true, completion: nil)
self.request = Alamofire.download(
url!,
method: .get,
parameters: nil,
encoding: JSONEncoding.default,
headers: ApplicationData.sharedInstance.authorizationHeaders,to: destination).downloadProgress(closure: { (progress) in
//progress closure
self.progressLabel.text = "Downloaded \(ByteCountFormatter.string(fromByteCount: progress.completedUnitCount, countStyle: .file)) of \(ByteCountFormatter.string(fromByteCount: progress.totalUnitCount, countStyle: .file) ) "
self.progressUpload.setProgress(Float(progress.fractionCompleted), animated: true)
}).response(completionHandler: { (response) in
self.uploadAlertView.dismiss(animated: true, completion: nil)
// check result is success
guard response.error == nil else {
failure()
return
}
success()
})
Любая помощь будет оценена.Спасибо.