![](/img/trans.png)
[英]Rails + Carrierwave + Ckeditor + Fog + S3 - files are not pointing to amazon
[英]Rails upload files to Amazon S3 with carrierwave and fog
我试图将电影文件从我的Rails应用程序上传到Amazon S3。 首先,我尝试了回形针,但是没有用...
不,我尝试过载波+雾,但是相同的结果无效,没有文件存储在S3中,没有数据库条目,也没有错误...
我的文件如下所示:
app / uploader / movie_uploader.rb
class MovieUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
config / initializers / carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: '--',
aws_secret_access_key: '--',
region: 'eu-central-1'
}
config.fog_directory = 'movies'
end
app / models / movie.rb
class Movie < ActiveRecord::Base
mount_uploader :movie, MovieUploader
end
app / controller / movies_controller.rb
class MoviesController < ActionController::Base
layout "application"
# Method to add a new Movie
def addMovie
if request.post?
@movie = Movie.new(movies_params)
if @movie.save
redirect_to :addMovie
end
else
@movie = Movie.new
end
end
private
def movies_params
params.require(:movie).permit(:movietitle, :movieprice, :locked, :moviedescription, :currency, :language, :movie)
end
end
上传表格
正常的多部分form_tag
<%= form_for Movie.new, :html => {:multipart => true, :class => "form-horizontal", :role => "form"}, :method => :post, :url => {} do |f| %>
带文件字段
<div class="form-group">
<label><%= f.label :movie %></label>
<%= f.file_field :movie, :class => "form-control", :placeholder => :movie %>
</div>
我使用了本教程: https : //u.osu.edu/hasnan.1/2014/03/13/rails-4-upload-image-to-s3-using-fog-and-carrierwave/
怎么了
我有同样的问题。 这解决了我的问题。
在MovieUploader中
class MovieUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
在config / carrierwave.rb中
if Rails.env.development? or Rails.env.test?
CarrierWave.configure do |config|
config.storage = :file
config.enable_processing = false
end
else
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'ACCESS KEY', # required
:aws_secret_access_key => 'ACCESS SECRET', # required
:region => 'eu-central-1'
}
config.fog_use_ssl_for_aws = false
config.storage = :fog
config.fog_directory = 'movies' # required
end
end
我希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.