AQE*_*MED 5 amazon-s3 ios swift
我正在尝试将 pdf 文件或图像文件上传到 AWSS3 存储桶,但出现AWSS3TransferUtilityErrorDomain Code=2错误。请注意,我已经检查过区域并且它是正确的。此外,我已经确认我使用了正确的accessKey和secretKey我也访问了下面提到的链接,但没有运气:
我上传文件的代码如下:
let credentials = AWSStaticCredentialsProvider(accessKey: “accessKey” , secretKey: “secretKey”)
let configuration = AWSServiceConfiguration(region: AWSRegionType.APSouth1 , credentialsProvider: credentials)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = { (task, progress) in
DispatchQueue.main.async(execute: {
// Update a progress bar
print("Task: \(task)")
print("Progress: \(progress)")
})
}
var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
if let error = error {
CommonLoader.hide()
SCLAlertView().showError("Error", subTitle: error.localizedDescription)
return
}
// Do stuff after success
})
}
let transferUtility = AWSS3TransferUtility.default()
// contentType —-> “image/jpeg” for images && “application/pdf” for pdf files
transferUtility.uploadData(data, bucket: s3BucketName, key: remoteName, contentType: contentType, expression: expression, completionHandler: completionHandler).continueWith { (task) -> Any? in
if let error = task.error {
// error case
}
else {
if !task.isFaulted && task.result != nil {
// success case
}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
经过大量搜索和阅读文档后,我能够解决这个问题。就我而言,有两个奇怪的事情,其中一个在Android上具有相同的凭据和存储桶,并且正在运行。但在iOS上,完全相同的代码在迪拜可以运行,但在巴基斯坦却不行。我通过将区域添加到项目 info.plist 文件中解决了这个问题,如下所述:
<key>S3TransferUtility</key>
<dict>
<key>Default</key>
<dict>
<key>Region</key>
<string>"ap-south-1"</string>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |