-
-
Save Humoud/4930ebc26166f18d24cdf203ec1b68bb to your computer and use it in GitHub Desktop.
Upload images to AWS S3 in rails application using aws-sdk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Using gem aws-sdk for a ror application for uploading images to s3 | |
#Uploading images to a fixed bucket with different folders for each object or application. | |
#The s3 keeps a limitation on the number of buckets creattion whereas there is no | |
#limitation for content inside a bucket. | |
#This code will upload image for a user to s3 using aws-sdk gem. The bucket and the image uploaded are made public | |
#so that the images uploaded are directly accessible. The input it takes is the image complete path | |
#where it is present, folder in which it should be uploaded and user_id for whom it should | |
#be uploaded. | |
def save_screenshot_to_s3(image_location, folder_name,user_id) | |
service = AWS::S3.new(:access_key_id => ACCESS_KEY_ID, | |
:secret_access_key => SECRET_ACCESS_KEY) | |
bucket_name = "app-images" | |
if(service.buckets.include?(bucket_name)) | |
bucket = service.buckets[bucket_name] | |
else | |
bucket = service.buckets.create(bucket_name) | |
end | |
bucket.acl = :public_read | |
key = folder_name.to_s + "/" + File.basename(image_location) | |
s3_file = service.buckets[bucket_name].objects[key].write(:file => image_location) | |
s3_file.acl = :public_read | |
user = User.where(id: user_id).first | |
user.image = s3_file.public_url.to_s | |
user.save | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment