【发布时间】:2017-01-17 19:56:23
【问题描述】:
我在应用程序中使用 Amazon S3 作为我的文件存储系统。我所有的项目对象都有几个与之关联的图像,每个都只存储图像 url 以保持我的数据库轻量级。因此,我需要一种有效的方法将多个图像直接从 iOS 上传到 S3,并在成功完成后将它们的 url 存储在我发送到服务器的对象中。我仔细阅读了亚马逊提供的 SDK 和示例应用程序,但我遇到的唯一示例是单个图像上传,如下所示:
func uploadData(data: NSData) {
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock
let transferUtility = AWSS3TransferUtility.defaultS3TransferUtility()
transferUtility.uploadData(
data,
bucket: S3BucketName,
key: S3UploadKeyName,
contentType: "text/plain",
expression: expression,
completionHander: completionHandler).continueWithBlock { (task) -> AnyObject! in
if let error = task.error {
NSLog("Error: %@",error.localizedDescription);
self.statusLabel.text = "Failed"
}
if let exception = task.exception {
NSLog("Exception: %@",exception.description);
self.statusLabel.text = "Failed"
}
if let _ = task.result {
self.statusLabel.text = "Generating Upload File"
NSLog("Upload Starting!")
// Do something with uploadTask.
}
return nil;
}
}
对于超过 5 张图片,这将变成一个嵌套的混乱,因为我必须等待每次上传成功返回,然后再启动下一张,然后最后将对象发送到我的数据库。是否有一种高效的、干净的代码来实现我的目标?
亚马逊示例应用 github 的 URL:https://github.com/awslabs/aws-sdk-ios-samples/tree/master/S3TransferUtility-Sample/Swift
【问题讨论】:
-
你解决了吗?我也在寻找同样的东西。
-
@user2722667 检查我添加的响应...可能为时已晚,但肯定会有所帮助
标签: ios amazon-web-services amazon-s3