私は自分のアプリケーションのS3に直接ファイルアップロードを開発しようとしています。私はgithubのチュートリアルに従っていますが、すべてが多かれ少なかれokですが、後処理をしようとするとエラーメッセージが表示されます。save_and_process後処理403 Forbidden Carrierwave_direct S3 Fog
私は次のようでした。その後、私はアップローダーを持って
class Clip < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
mount_uploader :avatar, AvatarUploader
attr_accessible :id, :avatar, :name, :clipat_file_name, :attachable_id, :attachable_type, :clipat, :project_id, :user_id, :path, :parent_id,
def save_and_process_avatar(options = {})
if options[:now] or 1==1
self.remote_avatar_url = avatar.direct_fog_url(:with_path => true)
save
else
Resque.enqueue(AvatarProcessor, attributes)
end
end
:
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
include CarrierWaveDirect::Uploader
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}" #I removed /#{model.id} from the template because it creates an empty directory on the server. But If I put it back, the same problem remains
end
version :thumb do
process :resize_to_limit => [50, 50]
end
end
とアバターコントローラavatar_uploader.rb
を私はclip.rbと呼ばれるActiveRecordのモデルを持っています:
class AvatarsController < ApplicationController
def new
@uploader = Clip.new.avatar
@uploader.success_action_redirect = 'http://localhost:3000/clips'
end
end
そして最後に私のclip_controller:私は、ファイルをアップロードすると、私はちょうど私の「クリップ」を保存した場合
class ClipsController < ApplicationController
def index
if params[:key]
key=params[:key].split("/")
clip = Clip.new
clip.attachable_id = key[3]
clip.attachable_type = "Pmdocument"
clip.key = params[:key]
# clip.save
clip.save_and_process_avatar
end
@clips = Clip.where("avatar is not null")
respond_to do |format|
format.html # index.html.erb
format.json { render json: @clips.collect { |p| p.to_jq_upload }.to_json }
end
end
は、すべてがOKです。私はしかし、save_and_processメソッドを使用している場合は、エラーが行で発生する: self.remote_avatar_url = avatar.direct_fog_url(:with_path =>真)
をこれはエラーメッセージです:
OpenURI::HTTPError (403 Forbidden):
app/models/clip.rb:38:in `save_and_process_avatar'
app/controllers/clips_controller.rb:22:in `index'
Rendered /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
Rendered /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms)
Rendered /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (5.2ms)
私がしてきましたこれに2日掛かりますので、どんな助けでも大歓迎です!!!ありがとう!!!ニコラス。
この行の結果はどうなっていますか? 'self.remote_avatar_url = avatar.direct_fog_url(:with_path => true)' – pschuegr
私はCarrierwaveで長年働いていません(Paperclipに戻る)。だから私はあなたの質問に答えることはできません。ごめんなさい... – ndemoreau