【发布时间】:2019-01-01 12:34:24
【问题描述】:
我有一个 Sinatra 应用程序,它接收图像并尝试将其上传到 s3。我收到的响应说模型已成功保存,但它在保存时返回的图像 URL 是缓存的上传。 s3 存储桶中也没有显示图像。代码如下,是不是有明显的错误?我正在关注Railscast #383 上传到 s3 的剧集。
感谢您的帮助,我尝试了很多方法都无济于事。
app.rb
before do
#Configure Carrierwave
CarrierWave.configure do |config|
config.storage = :fog
config.fog_credentials = {
provider: "AWS",
aws_access_key_id: ENV['s3_access_key_id'],
aws_secret_access_key: ENV['s3_secret_access_key']
}
config.fog_directory = ENV['s3_bucket']
config.fog_public = true
end
end
post "/nominations" do
image = params[:file] || nil
nomination = Nomination.create({
image: image
})
if nomination.valid?
nomination.save
status 201
body nomination.image.url
else
status 500
body nomination.errors.messages.to_s.to_json
end
end
end
image_uploader.rb
require "carrierwave"
require 'carrierwave/storage/fog'
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def extension_white_list
%w(jpg jpeg gif png)
end
end
提名.rb
class Nomination < ActiveRecord::Base
extend CarrierWave::Mount
attr_accessor :image
mount_uploader :image, ImageUploader
end
【问题讨论】:
-
如果您将
ruby标签添加到此,您可能会获得更多观看次数,可能会代替amazon-web-services,因为amazon-s3标签涵盖了这一点。
标签: ruby heroku amazon-s3 sinatra carrierwave