Rails图像上传API,无需在数据库中保存数据并返回名称

问题描述 投票:1回答:1

我想使用带有S3的CarrierWave创建一个用于图像上传的API。普通文件上传正在运行,但我想为上传图像和返回图像URL创建一个API,而不需要在数据库表中使用相同的名称。

我怎样才能做到这一点?

ruby-on-rails api amazon-s3 ruby-on-rails-5 carrierwave
1个回答
1
投票

你需要在你的gemfile中包含以下gem:gem'aws-sdk','〜> 3'

并在控制器中使用以下代码(使用API​​S)

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
© www.soinside.com 2019 - 2024. All rights reserved.