我想将文件从Rails应用程序直接上传到AmazonS3。现在的配置看起来像这样:
宝石文件
宝石“回形针”
宝石'aws-sdk'
在config / application.rb中
# Amazon S3 configuration for paperclip
config.paperclip_defaults = {
:storage => :s3,
:s3_host_name => 's3-eu-west-1.amazonaws.com'
}
型号-movie.rb
class Movie < ActiveRecord::Base
# add File to Movie association on column mo
has_attached_file :movie,
:storage => :s3,
:bucket => '--',
:s3_credentials => {
:bucket => '---',
:access_key_id => '---',
:secret_access_key => '---'
}
# validdates the file type
validates_attachment_content_type :movie, :content_type => /\Avideo\/.*\Z/
end
控制器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)
@movie = Movie.new(params[:movie])
if @movie.save
flash[:notice] = t("flash.moveuploadstarted")
redirect_to :addMovie
end
else
@movie = Movie.new
end
end
private
def movies_params
params.require(:movie).permit(:movietitle, :movieprice, :locked, :moviedescription, :currency, :language)
end
end
当我填写表格并发送电影时,浏览器将开始上传电影,该行为将显示在左下角。但是当达到100%时,电影不会存储到Amazon S3,并且DB是空的,但是没有错误等等。
可能是什么问题呢?。
更新:
上传表单具有该视频的输入文件
<div class="form-group">
<label><%= f.label :movie %></label>
<%= f.file_field :movie, :class => "form-control", :placeholder => :movie %>
</div>
这是使用载波的代码,但对于paperpclip应该相同(顺便说一下,建议使用载波)
请注意,它应该在config初始化文件中
config/initializers/carrier_wave.rb
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句