我正在构建一个iOS应用程序,并且我已经被S3上传卡住了几天。我一直在遵循这里提供的文档:
https://aws-amplify.github.io/docs/ios/storage。
当我点击这个函数时,它看起来好像一切都在Xcode中工作,并且没有返回任何错误。然而,当我查看我的S3存储桶时,我发现图片从未上传过。这是我的上传函数(我也在这里放了凭证信息):
我认为我的困惑来源来自于从Cognito获得凭据。我觉得我需要Cognito凭证才能访问AWS Transfer Utility,而下面的代码似乎应该这样做?
@IBAction func uploadData() {
let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast2, identityPoolId: "us-east-2:XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX", identityProviderManager:pool)
let serviceConfiguration = AWSServiceConfiguration(region: .USEast2, credentialsProvider: credentialsProvider)
let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "XXXX", clientSecret: "XXXX", poolId: "us-east-XXXX")
let tu = AWSS3TransferUtilityConfiguration()
AWSS3TransferUtility.register(with: serviceConfiguration!, transferUtilityConfiguration: tu, forKey: "UserPool")
let transferUtility:(AWSS3TransferUtility?) = AWSS3TransferUtility.s3TransferUtility(forKey: "UserPool")
AWSServiceManager.default()?.defaultServiceConfiguration = serviceConfiguration
let data = self.imageView?.image?.pngData() // Data to be uploaded
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
// Do something e.g. Update a progress bar.
})
}
var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
// Do something e.g. Alert a user for transfer completion.
// On failed uploads, `error` contains the error object.
})
}
transferUtility!.uploadData(data as! Data,
bucket: "mybucket-env",
key: "YourFileName",
contentType: "image/png",
expression: expression,
completionHandler: completionHandler).continueWith {
(task) -> AnyObject? in
if let error = task.error {
print("Error: \(error.localizedDescription)")
}
if let _ = task.result {
// Do something with uploadTask.
}
return nil;
}
}发布于 2019-12-30 01:44:43
文档已更新:https://aws-amplify.github.io/docs/ios/storage
您可以使用AWS Amplify实现相同的功能
和dependencies
awsconfiguration.json pod 'AmplifyPlugins/AWSS3StoragePlugin'
pod 'AWSMobileClient', '~> 2.12.0'初始化AWSMobileClient和Amplify
的
https://stackoverflow.com/questions/55443508
复制相似问题