Skip to content

Instantly share code, notes, and snippets.

@dahal
Forked from Bijendra/upload-images-s3-sdk-ruby
Created December 30, 2014 20:02
Show Gist options
  • Save dahal/5988cb6e5c20dece7291 to your computer and use it in GitHub Desktop.
Save dahal/5988cb6e5c20dece7291 to your computer and use it in GitHub Desktop.
#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 is 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