def image_upload file_name = params[:croppedImage].original_filename file_type = params[:croppedImage].content_type s3 = AWS::S3.new(access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], region: 'us-east-1') bucket = s3.buckets[ENV['S3_BUCKET']] name = "dinetab_#{Time.current.to_i}" + "_image.#{file_type.split('/').last}" convert_image(name, params[:croppedImage]) name = name.split('.').first name = "#{name}.jpg" @file = File.read("public/#{name}") obj = bucket.objects.create(name, @file, { content_type: file_type, acl: "public_read" }) url = obj.public_url().to_s width, height = FastImage.size(url) File.delete("public/#{name}") render json: { status: "success", url: url, width: width, height: height } end def convert_image(name, image) tmp = image.tempfile destiny_file = File.join('public', name) FileUtils.move tmp.path, destiny_file @image = MiniMagick::Image.new(destiny_file) @image.path @image.resize "800x800" @image.format "jpg" name = name.split('.').first @image.write "public/#{name}.jpg" end