繁体   English   中英

递归上传目录iOS AWS S3

[英]Uploading a directory recursively iOS AWS S3

我一直在尝试使用适用于AWS的iOS SDK将目录上载到S3一段时间。

目前,我一直必须.zip我一直上传的目录。 在我的EC2服务器上使用s3cmd,我可以上传目录。 我还读过,可以使用其他SDK。

这是我现在拥有的代码(快捷方式):

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:]:荒谬的长度: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的正确方法?

您不能将目录作为body传递。 您需要递归地列出目录中的文件,然后为每个文件调用- upload:


AWSS3TransferManager()不是此类的有效初始化器。 出现异常的reason

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

您需要使用AWSS3TransferManager.defaultS3TransferManager()AWSS3TransferManager(forKey: "YourKey") 阅读API文档以获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM