iOS Swift 上的 AWSS3TransferUtilityErrorDomain Code=2 尝试上传图像/pdf 时

AQE*_*MED 5 amazon-s3 ios swift

我正在尝试将 pdf 文件或图像文件上传到 AWSS3 存储桶,但出现AWSS3TransferUtilityErrorDomain Code=2错误。请注意,我已经检查过区域并且它是正确的。此外,我已经确认我使用了正确的accessKeysecretKey我也访问了下面提到的链接,但没有运气:

我上传文件的代码如下:

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)

AQE*_*MED 2

经过大量搜索和阅读文档后,我能够解决这个问题。就我而言,有两个奇怪的事情,其中​​一个在Android上具有相同的凭据和存储桶,并且正在运行。但在iOS上,完全相同的代码在迪拜可以运行,但在巴基斯坦却不行。我通过将区域添加到项目 info.plist 文件中解决了这个问题,如下所述:

  • 请注意,在我的案例中,区域是ap-south-1,但您需要将其放在这里,您可以从Amazon S3 终端节点检查区域,然后找到要在 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)