我一直试图弄清楚如何使用适用于iOS的iOS SDK将目录上传到S3很长一段时间。
目前,我一直不得不.zip我上传的目录。在我的EC2服务器上使用s3cmd,我可以上传目录没问题。我还读到可以使用其他SDK。
这是我现在的代码(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] *由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' * - [NSConcreteData initWithBytes:length:copy:deallocator:]:absurd length:18446744073709551615,最大大小:9223372036854775808字节' ***第一次抛出调用堆栈: (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:以NSException类型的未捕获异常终止
如果我更改了.zip的路径,它上传没问题。
是否有人知道使用iOS SDK将目录上传到s3的正确方法?
答案 0 :(得分:0)
您无法将目录作为body
传递。您需要以递归方式列出目录中的文件,并为每个文件调用- upload:
。
AWSS3TransferManager()不是此类的有效初始值设定项。该例外的reason
是
`- init` is not a valid initializer. Use `+ defaultS3TransferManager` or `+ S3TransferManagerForKey:` instead.
您需要使用AWSS3TransferManager.defaultS3TransferManager()
或AWSS3TransferManager(forKey: "YourKey")
。请阅读API docs了解详情。