레일스 애플리케이션에서 Amazon S3로 동영상 파일을 업로드하려고했습니다. 먼저 클립을 시도했지만 작동하지 않습니다 ...
아니요 carrierwave + fog를 시도했지만 동일한 결과가 작동하지 않고 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
도움이 되셨기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다