Загрузите файл с amazon s3, используя alamofire - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу скачать файл с 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()

            })

Любая помощь будет оценена.Спасибо.

...