API загрузки изображений Rails без сохранения данных в базе данных и имени возврата - PullRequest
1 голос
/ 11 апреля 2019

Я хочу создать один API для загрузки изображений с помощью CarrierWave с S3. Нормальная загрузка файла работает, но я хочу создать один API для загрузки изображения и возврата URL-адреса изображения, не требуя того же имени в таблице базы данных.

Как я могу это сделать?

1 Ответ

1 голос
/ 16 апреля 2019

Вам необходимо включить в свой gemfile следующий гем: gem 'aws-sdk', '~> 3'

и использовать приведенный ниже код в контроллере (используя APIS)

require 'aws-sdk-s3'
class Api::V1::UploaderController < ApplicationController
    def create
        file = uploader_params[:image_url]
        file_name =   "#{file.original_filename}"
        upload_file = file.tempfile
        s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'],access_key_id: ENV['AWS_ACCESS_KEY'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] )

        obj = s3.bucket(ENV['AWS_BUCKET_NAME']).object(file_name)
        obj.upload_file(upload_file, { acl: 'public-read' })
        success(data: obj.public_url, status: 200)
    end
end
...