2017-02-23 22 views
0

По какой-то причине загрузка на S3 не работает, тогда как я смог заставить функцию загрузки работать нормально.XCode Swift AWS S3 Загрузка не работает

Вот мой код загрузки:

@IBAction функ uploadFile (_ отправитель: UIButton) {

let CognitoRegionType = AWSRegionType.USWest2 // e.g. AWSRegionType.USEast1 
    let CognitoIdentityPoolId = "us-west-2:3c00122a-866c-4ce4-9dd3-ee23c16e58f3" 

    let DefaultServiceRegionType = AWSRegionType.USWest1 // e.g. AWSRegionType.USEast1 
    let S3BucketName = "snappcastphotos" 


    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType, identityPoolId: CognitoIdentityPoolId) 
    let configuration = AWSServiceConfiguration(region: DefaultServiceRegionType , credentialsProvider:credentialsProvider) 
    AWSServiceManager.default().defaultServiceConfiguration = configuration 


    let uploadRequest = AWSS3TransferManagerUploadRequest() 
    uploadRequest?.bucket = S3BucketName 
    uploadRequest?.key = "bingo" 
    uploadRequest?.body = URL(fileURLWithPath: "https://stackoverflow.com/users/rhom/desktop/test.rtf") 

    let transferManager = AWSS3TransferManager.default() 
    transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in 

     if let error = task.error as? NSError { 
      if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) { 
       switch code { 
       case .cancelled, .paused: 
        break 
       default: 
        print("Error uploading: \(uploadRequest?.key) Error: \(error)") 
       } 
      } else { 
       print("Error uploading: \(uploadRequest?.key) Error: \(error)") 
      } 
      return nil 
     } 

     let uploadOutput = task.result 
     print("Upload complete for: \(uploadRequest?.key)") 
     return nil 
    }) 
} 

и этот код выдает следующую ошибку/вывод:

загрузки Ошибка: Дополнительный («бинго») Ошибка: Ошибка домена = com.amazonaws.AWSS3ErrorDomain Code = 0 "(null)" UserInfo = {HostId = KAsbvIqiY67dr/64f3uvZPB1Lr5Vj7eNNV198DLai/RG/tA + v3To8CBbnbFSM00V2COZnzebx/M =, Message = Тело запроса неожиданно прекращено, Код = IncompleteBody, RequestId = A95236E53A1B8FE8}

У кого-нибудь есть идеи? Я не могу найти подсказки относительно того, почему загрузка работает с использованием Cognito и S3, но загрузка не работает.

ответ

0

Это больше похоже на ошибку авторизации. Проверьте, есть ли у вас права на запись для этого конкретного ведра, а также проверьте, что путь, который вы даете, правильный, как будто существует несоответствие, которое не работает.

+0

yes Я проверил разрешения в Cognito и S3 bucket, чтобы убедиться, что они читают/пишут ... будут продолжать поиск, но thx для комментариев – user3424472

0

я, наконец, понял эту проблему вне :)

Оказывается, что я установил старую версию AWS рамочных, как я был следующим старшим учебник, чтобы начать ... и погрузил каркасы с помощью Cocoapods уточняющей в podfile для IOS 8.0, но теперь я IOS 10.0 !!!! поэтому изменение podfile до версии 10.0 устранило проблему.

я в конечном итоге переустановка AWS рамочного с помощью Cocoapods и правильного podfile с 10.0 ... но я думаю, что есть способ просто обновить стручок, но я буду смотреть в этом поздний

Надеется, что это помогает любому, кто имеет эта проблема тоже :)

Смежные вопросы