2016-02-26 58 views
2

我一直在試圖弄清楚如何使用適用於AWS的iOS SDK將目錄上載到S3一段時間。我一直不得不上傳我上傳的目錄。在我的EC2服務器上使用s3cmd,我可以上傳目錄沒有問題。我也讀過使用其他SDK的可能性。以遞歸方式上傳目錄iOS AWS S3

這是代碼我現在有(SWIFT):

let folderPath = DocumentFolder.stringByAppendingString("/folderPath/folder") 
let uploadRequest = AWSS3TransferManagerUploadRequest() 
      uploadRequest.bucket = "my-bucket" 
      uploadRequest.serverSideEncryption = AWSS3ServerSideEncryption.AwsKms 
      uploadRequest.body = NSURL(fileURLWithPath: folderPath) 
      uploadRequest.key = "/\(folderName)/" 


      AWSS3TransferManager.defaultS3TransferManager().upload(uploadRequest) 

然而,這使我收到NSInvalidArgumentException。

這是確切的錯誤:

2016-02-26 15:11:10.672 Q-Gate[1002:417054] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSConcreteData initWithBytes:length:copy:deallocator:]: absurd length: 18446744073709551615, maximum size: 9223372036854775808 bytes' *** First throw call stack: (0x181e55900 0x1814c3f80 0x181e55848 0x182743ef4 0x182743e38 0x1001ccdd0 0x1001cd7fc 0x18242287c 0x182420eb4 0x182420d74 0x182420ca4 0x1824a6ee4 0x182420c30 0x101e81bb0 0x101e8b354 0x182417a88 0x181d390ac 0x18241796c 0x18241782c 0x182417658 0x181e0cefc 0x181e0c990 0x181e0a690 0x181d39680 0x1824a9434 0x182817c40 0x181abfb28 0x181abfa8c 0x181abd028) libc++abi.dylib: terminating with uncaught exception of type NSException

如果我更改爲.zip文件的路徑,它上傳沒問題。

有誰知道正確的方式上傳目錄到s3使用他們的iOS SDK?

回答

0

您無法將目錄作爲body傳遞。您需要遞歸列出目錄中的文件,併爲每個文件調用- upload:


AWSS3TransferManager()不是此類的有效初始值設定項。該reason的例外是

`- init` is not a valid initializer. Use `+ defaultS3TransferManager` or `+ S3TransferManagerForKey:` instead. 

您需要使用AWSS3TransferManager.defaultS3TransferManager()AWSS3TransferManager(forKey: "YourKey")。請閱讀API docs瞭解更多詳情。

+0

在本文中爲了更好的可讀性而修改我的代碼時,我不小心忽略了那部分。在我的實際項目中,我就是這麼稱呼它的。 – kakkman