upload images to AWS::S3 in ruby using aws sdk gem
Using gem aws-sdk for a ROR application for uploading images to s3def 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
Uploading images to a fixed bucket with different folders for each object or application. The s3 keeps a limitation on the number of buckets creation 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.