This Swift code example will demonstrate how to upload image to Amazon AWS S3 Bucket.
The code example below will cover:
- Set up AWS S3 Bucket policy,
- Configure AWSCognitoCredentialsProvider,
- Set up AWSS3TransferManagerUploadRequest
- User AWSS3TransferManager to upload image
- Read uploaded image from Amazon S3 Bucket
- Display uploaded image as a subview
AWS Bucket Policy
{ "Version": "2008-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::learn-swift/*" } ] }
Image Upload to Amazon AWS S3 Bucket. Complete Code Example in Swift.
import UIKit import AWSCore import AWSS3 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // Configure AWS Cognito Credentials let myIdentityPoolId = "" let credentialsProvider:AWSCognitoCredentialsProvider = AWSCognitoCredentialsProvider(regionType:AWSRegionType.usEast1, identityPoolId: myIdentityPoolId) let configuration = AWSServiceConfiguration(region:AWSRegionType.usEast1, credentialsProvider:credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration // Set up AWS Transfer Manager Request let S3BucketName = "learn-swift" let ext = "jpeg" let localFileName = "kungfu2" // local file name here let remoteName = localFileName + "." + ext //let fileName = NSUUID().UUIDString + "." + ext let imageURL = Bundle.main.url(forResource: localFileName, withExtension: ext)! let uploadRequest = AWSS3TransferManagerUploadRequest() uploadRequest?.body = imageURL uploadRequest?.key = remoteName uploadRequest?.bucket = S3BucketName uploadRequest?.contentType = "image/" + ext let transferManager = AWSS3TransferManager.default() // Perform file upload transferManager?.upload(uploadRequest).continue({ (task:AWSTask) -> Any? in if let error = task.error { print("Upload failed with error: (\(error.localizedDescription))") } if let exception = task.exception { print("Upload failed with exception (\(exception))") } if task.result != nil { let s3URL = URL(string: "https://s3.amazonaws.com/\(S3BucketName)/\(uploadRequest!.key!)")! print("Uploaded to:\n\(s3URL)") // Read uploaded image and display in a view let imageData = NSData(contentsOf: s3URL as URL) if let downloadedImageData = imageData { DispatchQueue.main.async { let image = UIImage(data: downloadedImageData as Data) let myImageView:UIImageView = UIImageView() myImageView.frame = CGRect(x:10, y:100, width:25, height:25) myImageView.image = image myImageView.contentMode = UIViewContentMode.scaleAspectFit self.view.addSubview(myImageView) } } } else { print("Unexpected empty result.") } return nil }) } }
[raw_html_snippet id=”cookbookpagecoursesheader”]
Unit Testing Swift Mobile App
Apply Test-Driven Development(TDD) process to iOS mobile app development in Swift Preview this video course.