我在我的应用程序中使用Amazon S3作为文件存储系统。 我所有的项目对象都有几个与它们相关联的图像,并且每个对象只存储图像URL以使我的数据库轻巧。 因此,我需要一种有效的方法来直接从iOS上传多个图像到S3,并在成功完成后将它们的URL存储在发送到服务器的对象中。 我已经查阅了Amazon提供的SDK和示例应用程序,但我找到的唯一示例是单个图像上传,并且如下:
对于超过5个图片,我需要等待每个上传成功后才能启动下一个上传,最后将对象发送到我的数据库中,这将导致嵌套混乱。有没有一种高效、代码清晰的方法来实现我的目标呢?
亚马逊示例应用程序github的URL:https://github.com/awslabs/aws-sdk-ios-samples/tree/master/S3TransferUtility-Sample/Swift
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