我想使用CarrierWave和S3创建一个用于图像上传的API。正常的文件上传正常,但是我想创建一个用于上传图像并返回图像URL的API,不需要在数据库表中使用相同的名称。
我该怎么做?
答案 0 :(得分:1)
您需要在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